Недавно мне пришлось сменить 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.
Любая помощь будет принята с благодарностью! Спасибо.
РЕДАКТИРОВАТЬ Согласно Костину, приведенному ниже, я запустил 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.
Я привел кого-то, и после небольшого изучения и тестирования мы добавили smtp_sasl_mechanism_filter = login
к main.cf
. Это прояснило это.
Он объяснил, что это заставляет postfix выполнять АВТОМАТИЧЕСКИЙ ВХОД (что я делал вручную при тестировании через telnet). smtp_sasl_mechanism_filter документ
Я смотрел с tail -F /var/log/mail.log
и электронные письма уходили. mailq
пробеги показали сокращение очереди, и это было хорошо.
Спасибо всем!
P.S. Еще три примечания:
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
затем перезагрузите конфигурацию постфикса
Также после подключения по telnet к 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