SMTP-аутентификация Postfix не работает с виртуальными почтовыми ящиками + 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 согласно учебнику.

РЕШИТЬ

Спасибо Дженни Д. за предложение использовать rimap авторизоваться на локальном IMAP-сервере (который читает учетные данные 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 при попытке отправить письмо. Надеюсь, ты в порядке!

1 ответ

Решение

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

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

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

saslauthd -a rimap -O myimap.server.com

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

Другие вопросы по тегам