Назад | Перейти на главную страницу

Postfix SMTP auth не работает с виртуальными почтовыми ящиками + SASL + Courier userdb

Итак, я прочитал множество руководств и инструкций, и я изо всех сил пытаюсь понять, как заставить SMTP-аутентификацию работать с виртуальными почтовыми ящиками в Postfix. Я использовал это Учебник Ubuntu для настройки. Я использую Courier-IMAP и POP3 для чтения почты, которая, похоже, работает без проблем.

Однако учетные данные, используемые для чтения почтового ящика, не работают для SMTP. Я могу видеть из /var/log/auth.log что используется PAM, требуется ли для работы учетная запись пользователя UNIX? Поскольку я использую виртуальные почтовые ящики, чтобы не создавать учетные записи пользователей.

li305-246 saslauthd[22856]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
li305-246 saslauthd[22856]: do_auth         : auth failure: [user=fred] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

/var/log/mail.log

li305-246 postfix/smtpd[27091]: setting up TLS connection from mail-pb0-f43.google.com[209.85.160.43]
li305-246 postfix/smtpd[27091]: Anonymous TLS connection established from mail-pb0-f43.google.com[209.85.160.43]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)
li305-246 postfix/smtpd[27091]: warning: SASL authentication failure: Password verification failed
li305-246 postfix/smtpd[27091]: warning: mail-pb0-f43.google.com[209.85.160.43]: SASL PLAIN authentication failed: authentication failure

Я создал учетные записи в userdb согласно этот учебник. Postfix также использует authuserdb?

Какая отладочная информация необходима для диагностики моей проблемы?

main.cf:

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# SMTP parameters

smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

/etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

/etc/default/saslauthd

START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

/etc/courier/authdaemonrc

authmodulelist="authuserdb"

Я изменил только одну строку в authdaemonrc и перезапустил службу согласно этот учебник. Я добавил аккаунты в /etc/courier/userdb через userdb и userdbpw и беги makeuserdb согласно руководству.

Решено

Спасибо Jenny D за предложение использовать rimap для авторизации на сервере IMAP localhost (который читает учетные данные userdb).

Я обновил /etc/default/saslauthd чтобы правильно запустить saslauthd (эта страница было полезно)

MECHANISMS="rimap"
MECH_OPTIONS="localhost"
THREADS=0
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

После этого я получил следующую ошибку в /var/log/auth.log:

li305-246 saslauthd[28093]: auth_rimap: unexpected response to auth request: * BYE [ALERT] Fatal error: Account's mailbox directory is not owned by the correct uid or gid: 
li305-246 saslauthd[28093]: do_auth         : auth failure: [user=fred] [service=smtp] [realm=] [mech=rimap] [reason=[ALERT] Unexpected response from remote authentication server]

Это сообщение в блоге детализировал решение, установив IMAP_MAILBOX_SANITY_CHECK=0 в /etc/courier/imapd.

Затем перезапустите демонов courier и saslauthd, чтобы изменения конфигурации вступили в силу.

sudo /etc/init.d/courier-imap restart
sudo /etc/init.d/courier-authdaemon restart
sudo /etc/init.d/saslauthd restart

Смотреть /var/log/auth.log при попытке отправить электронное письмо. Надеюсь, у вас все хорошо!

На самом деле это скорее вопрос sasl, чем вопрос Postfix. У вас есть postfix, настроенный для взаимодействия с sasl - пока все хорошо. Теперь вам нужно указать saslauthd, где найти ваши имена пользователей и пароль. Если вы не дадите ему никаких аргументов, он по умолчанию будет рассматривать их как локальных пользователей, что вы видите в своем журнале auth.log.

Насколько мне известно (что может быть не очень далеко, когда дело доходит до SASL), он не использует ту же базу данных, что и ваш виртуальный пользователь для pop3. Но есть возможность для saslauthd попытаться войти на сервер IMAP с теми же учетными данными - я думаю, это должно делать то, что вы хотите.

Для этого вы запускаете saslauthd следующим образом:

saslauthd -a rimap -O myimap.server.com

У вас должна быть возможность протестировать аутентификацию с помощью программы testsaslauthd, которая должна поставляться с вашей установкой sasl. Удачи!