Я настроил postfix и dovecot, как указано в http://www.postfix.org/SASL_README.html#server_dovecot_comm описание для активации аутентификации sasl.
К сожалению, postfix отклоняет каждый соединения со следующей ошибкой, отображаемой в журнале
postfix/smtpd[5238]: fatal: no SASL authentication mechanisms
Я использую Ubuntu LTS 10.04.
Погуглил, я видел, как много людей сообщали об этой неясной ошибке, не описывая четкую диагностику. Неясно, на стороне ли голубятни или на стороне постфикса.
ОБНОВИТЬ: конфигурация sasl postfix, полученная с помощью postconf | grep -e "^ smtpd. * sasl"
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_client_access hash:/etc/postfix/access,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client korea.services.net
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain =
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
При попытке подключить остроумие telnet localhost 25 соединение немедленно закрывается с сообщением выше. Комментируя smtpd_sasl_auth_enable = да отключает sasl и соединение завершается нормально.
Конфигурация Dovecot, полученная с голубятня -n
# 1.2.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-41-generic i686 Ubuntu 10.04.4 LTS
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: imaps
ssl_cert_file: /home/xxxx/cacert/xxxx.net/server.crt
ssl_key_file: /home/xxxx/cacert/xxxx.net/server.key
verbose_ssl: yes
login_dir: /var/run/dovecot/login
login_executable: /usr/lib/dovecot/imap-login
mail_privileged_group: mail
mail_location: maildir:~/Maildir
mbox_write_locks: fcntl dotlock
auth default:
mechanisms: plain login
passdb:
driver: pam
userdb:
driver: passwd
socket:
type: listen
client:
path: /var/spool/postfix/private/auth
mode: 432
user: postfix
group: postfix
Реальные ценности скрыты с помощью xxxx
root@xxxx:/etc/postfix# stat /var/spool/postfix/private/auth
File: «/var/spool/postfix/private/auth»
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 801h/2049d Inode: 6817165 Links: 1
Access: (0660/srw-rw----) Uid: ( 111/ postfix) Gid: ( 120/ postfix)
Access: 2012-08-10 16:47:06.000000000 +0200
Modify: 2012-08-10 16:46:09.000000000 +0200
Change: 2012-08-10 16:46:09.000000000 +0200
ОБНОВИТЬ: ошибка удаляется, если я меняю smtpd_tls_auth_only = нет к smtpd_tls_auth_only = да. Теперь я могу получать почту на локальный почтовый ящик с удаленных хостов.
Мне нужно настроить мой MUA для подключения к STARTTLS, чтобы иметь возможность подключиться. Если я попытаюсь подключиться с помощью SSL / TLS, соединение зависнет. С STARTTLS соединение устанавливается, но анонимно и, следовательно, ретранслятор почты отклоняется, что я и хотел включить. Вот что я вижу в системном журнале.
postfix/smtpd[7715]: connect from unknown[192.168.2.17]
postfix/smtpd[7715]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[7715]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
ОБНОВИТЬ вывод dovecot auth_debug при попытке ретрансляции почты через сервер postfix. Вероятно, это проблема конфигурации постфикса.
postfix/smtpd[8186]: connect from unknown[192.168.2.17]
postfix/smtpd[8186]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[8186]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
dovecot: auth(default): new auth connection: pid=8186
dovecot: auth(default): client in: AUTH#0111#011PLAIN#011service=smtp#011nologin#011lip=192.168.2.3#011rip=192.168.2.17#011secured#011resp=<hidden>
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): lookup service=dovecot
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): #1/1 style=1 msg=Password:
home dovecot: auth(default): client out: OK#0111#011user=yyyy
postfix/smtpd[8186]: NOQUEUE: reject: RCPT from unknown[192.168.2.17]: 554 5.7.1 <wwww@zzzz.com>: Relay access denied; from=<yyyy@xxxx.net> to=<wwww@zzzz.com> proto=ESMTP helo=<[192.168.2.17]>
postfix/smtpd[8186]: disconnect from unknown[192.168.2.17]
Это означает, что postfix правильно взаимодействует с dovecot, и я предполагаю, что аутентификация работает, поскольку dovecot возвращает Ok в конце своей транзакции.
Отправка на локальную учетную запись работает, и мой MUA использует TLS, как и ожидалось. Таким образом, осталась единственная проблема - разрешить ретрансляцию для аутентифицированных пользователей. я думал что
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
будет достаточно после прочтения документации postfix.
РЕШЕНИЕ: При комментировании параметра smtpd_sender_restriction было возможно реле. Я нашел его, комментируя один за другим подозрительные аргументы. Я не знаю, что в нем может блокировать ретрансляцию почты.
smtpd_sender_restrictions =
permit_mynetworks,
reject_sender_login_mismatch,
reject_unauth_destination,
reject_unauth_pipelining,
reject_unknown_sender_domain
regexp:/etc/postfix/forbid_from
Вероятно, мы сможем решить эту проблему, задав несколько вопросов:
/var/spool/postfix/private/auth
?Если ответ на любой из этих вопросов «Нет», мы нашли вашу проблему. Если все ответы «Да», отправьте сообщение doveconf -n
Решил проблему сам.
Параметр, вызывающий отказ реле:
smtpd_sender_restrictions = ..., reject_unauth_destination, ...
После удаления ретрансляция стала возможной для пользователей, прошедших проверку подлинности sasl.