Аутентификация postfix SASL завершилась неудачно - внутренняя ошибка аутентификации

Недавно мне пришлось сменить SMTP-реле с Cablevision на Verizon. Verizon блокирует порт 25, но они будут принимать SSL через порт 465 (за это). Я использовал это и это, чтобы иметь stunnnel вперед postfix данные к порту 465.

К сожалению, моя почта не делает это. Я получаю следующие ошибки в mail.log:

Sep  8 15:16:25 DServ postfix/qmgr[6178]: A9EF9480429: from=<mark.kasson@docsmit.com>, size=545, nrcpt=1 (queue active)
Sep  8 15:16:25 DServ postfix/smtp[6777]: A9EF9480429: to=<markkasson@gmail.com>, relay=127.0.0.1[127.0.0.1]:12345, delay=231428, delays=231428/0.01/0.4/0, dsn=4.7.0, status=deferred (SASL authentication failed; server 127.0.0.1[127.0.0.1] said: 500 5.7.0 Unknown AUTH error -1 (Internal authentication error).)

Dovecot выдает сообщения, однако ни одно из них не является сообщением об ошибке. Я также видел следующее:

Sep  8 17:26:26 DServ postfix/error[7112]: D0B944801A9: to=<mkasson@sigmgt.com>, relay=none, delay=197679, delays=197679/0.01/0/0.03, dsn=4.7.0, status=deferred (delivery temporarily suspended: SASL authentication failed; server 127.0.0.1[127.0.0.1] said: 500 5.7.0 Unknown AUTH error -1 (Internal authentication error).)

в моем main.cf у меня есть:

relayhost = [127.0.0.1]:12345
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

в /etc/postfix/sasl_passwd у меня есть

[127.0.0.1]:12345 MYUSERNAME@verizon.net:MYPASSWORD

Я бегал:

sudo postmap hash:/etc/postfix/sasl_passwd
sudo service postfix restart

Если я telnet localhost 12345 Я могу добраться до сервера verizon.

Любая помощь будет принята с благодарностью! Спасибо.

EDIT Per Costin ниже, я запустил openssl и получил:

CONNECTED(00000003)
3073435324:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:787:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

Похоже, он жалуется на неизвестный протокол. Я не уверен, где взять это отсюда.

ДОБАВЛЕНИЕ Суккулентная транскрипция telnet:

telnet localhost 12345
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vms173023pub.verizon.net -- Server ESMTP (Sun Java(tm) System Messaging Server 7u2-7.02 32bit (built Apr 16 2009))
EHLO verizon.net
250-vms173023pub.verizon.net
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-DSN
250-ENHANCEDSTATUSCODES
250-HELP
250-XLOOP 80E3E78D42E6EE2FDAB2C28EB1AA64CD
250-AUTH DIGEST-MD5 PLAIN LOGIN CRAM-MD5
250-AUTH=LOGIN PLAIN
250-ETRN
250-NO-SOLICITING
250 SIZE 20971520
AUTH LOGIN
334 VXNlcm5hbWU6
MYUSERNAME-IN-64
334 UGFzc3dvcmQ6
MYPASSWORD-IN-64
235 2.7.0 LOGIN authentication successful.

4 ответа

Решение

Я привел кого-то и, после небольшого осмотра и тестирования, мы добавили smtp_sasl_mechanism_filter = login в main.cf, Это прояснилось.

Он объяснил, что это заставляет postfix выполнять AUTH LOGIN (что я делал вручную при тестировании через telnet). smtp_sasl_mechanism_filter doc

Я смотрел с tail -F /var/log/mail.log и электронные письма выходили. mailq пробеги показали сокращение очереди, и это было хорошо.

Спасибо всем!

PS Еще три заметки:

1) я удалил smtp_sasl_security_options = noanonymous, Возможно, это было в правильном направлении, но это не было сделано.

2) мне не нужно было использовать smtp_generic_maps,

Одна из статей использовала оба из них (и Костин предложил smtp_sasl_security_options также).

3) Эта статья помогла показать, как получить пароль Base64 для входа в систему с помощью telnet с perl -MMIME::Base64 -e 'print encode_base64("john\@example.com\0john\@example.com\0password")';

Попробуйте добавить это в ваш main.cf

smtp_sasl_security_options = noanonymous

затем перезагрузите конфигурацию postfix

Также после telnetting to localhost попробуйте использовать шаги, описанные здесь, чтобы проверить подключение smtp auth к verizon: http://www.ndchost.com/wiki/mail/test-smtp-auth-telnet

замещать telnet mailserver.com 25 команда из статьи с
telnet localhost 12345

В некоторых документах не упоминается, что вам нужно иметь libsasl2-modules пакет установлен. Пожалуйста, проверьте, установлен ли он, и установите его, если нет.

Это произошло, когда я изменил пароль, чтобы он снова заработал, удалите sasl_passwd.db, затем перенастройте его с помощью sudo postmap /etc/postfix/sasl_passwd, затем перезапустите postfix systemctl restart postfix

попробуйте эту конфигурацию для вашего main.cf

      relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_mechanism_filter = login

при условии, что все остальные конфигурации выполнены соответствующим образом.

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