GeoNetAgent, LDAPWeb, server-audit, server-connection
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

49 lines
1.8 KiB

#!/bin/bash
# Switch support@geonet.co.id from authsource mailcow → ldap
# Inbox/fetchmail unchanged — only IMAP/SMTP login uses AD password
set -euo pipefail
MAILBOX='support@geonet.co.id'
STACK='/opt/stacks/mailcow'
MYSQL_C='mailcowdockerized-mysql-mailcow-1'
DOVECOT_C='mailcowdockerized-dovecot-mailcow-1'
SOGO_C='mailcowdockerized-sogo-mailcow-1'
PHP_C='mailcowdockerized-php-fpm-mailcow-1'
mysql_q() {
docker exec "$MYSQL_C" bash -lc "mysql mailcow -uroot -p\"\$MYSQL_ROOT_PASSWORD\" -N -e \"$1\""
}
echo "== Pre-check =="
BEFORE=$(mysql_q "SELECT username, active, authsource FROM mailbox WHERE username='${MAILBOX}';")
echo "Mailbox: $BEFORE"
if ! echo "$BEFORE" | grep -q "$MAILBOX"; then
echo "ERROR: mailbox ${MAILBOX} not found"
exit 1
fi
echo "== LDAP sync (import/provision) =="
docker exec "$PHP_C" php /crons/ldap-sync.php || true
echo "== Switch authsource to ldap =="
mysql_q "UPDATE mailbox SET authsource='ldap' WHERE username='${MAILBOX}';"
AFTER=$(mysql_q "SELECT username, active, authsource FROM mailbox WHERE username='${MAILBOX}';")
echo "Mailbox after: $AFTER"
echo "== SOGo static view (LDAP user) =="
# LDAP users: clear local password hash in SOGo view; SOGo authenticates via LDAP
docker exec "$MYSQL_C" bash -lc "mysql mailcow -uroot -p\"\$MYSQL_ROOT_PASSWORD\" -e \"
UPDATE _sogo_static_view SET c_password = NULL WHERE c_name = '${MAILBOX}';
\"" || echo "WARN: _sogo_static_view update skipped (table/row may differ)"
echo "== Restart mail services =="
cd "$STACK"
docker compose restart dovecot-mailcow sogo-mailcow
echo "== fetchmail timer =="
systemctl is-active fetchmail-support.timer
docker exec "$DOVECOT_C" doveadm mailbox status -u "$MAILBOX" messages INBOX 2>/dev/null || true
echo ""
echo "DONE. Test IMAP with AD password for ${MAILBOX}"
echo "fetchmail POP3 drain unchanged (cPanel -> same inbox)"