Итак, я прочитал множество руководств и инструкций, и я изо всех сил пытаюсь понять, как заставить 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. Удачи!