Я настраиваю почтовый сервер на Ubuntu на основе: https://help.ubuntu.com/community/Postfix
В настоящее время я могу как отправлять, так и получать электронную почту с сервера. Однако попытки отправить электронную почту через SMTP из Gmail терпят неудачу из-за плохой аутентификации. Я проверил свой пароль, убедился, что порт открыт, и могу подключиться к IP-адресу и порту через Telnet.
Вывод Telnet (с удаленного хоста)
Computer:~ Louis$ telnet mail.mysite.com 587
Trying 71.66.218.124...
Connected to mail.mysite.com (71.66.218.124).
Escape character is '^]'.
220 mail.mysite.com ESMTP Postfix
ehlo mail.mysite.com
250-mail.mysite.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN
250-AUTH=DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
И, проверяя мою регистрационную информацию:
sudo testsaslauthd -u jon -p ********
0: OK "Success."
И в настоящее время прослушивающие порты:
netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp6 0 0 :::587 :::* LISTEN
tcp6 0 0 :::110 :::* LISTEN
tcp6 0 0 :::143 :::* LISTEN
tcp6 0 0 :::4949 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::25 :::* LISTEN
Есть идеи, почему я не могу удаленно настроить свой SMTP для отправки электронной почты?
РЕДАКТИРОВАТЬ
Я предпочитаю интерфейс Gmail и хотел бы объединить всю свою почту в одной онлайн-службе. Я могу добавить свою учетную запись POP3 в Gmail (настройки> учетные записи> Добавить собственную учетную запись POP3 Mail). После успешной аутентификации на моем сервере меня спрашивают, хочу ли я отправлять электронную почту через мои серверы smtp, на что я говорю да. Когда я пытаюсь войти в систему, я получаю следующее сообщение:
Ошибка аутентификации. Пожалуйста, проверьте ваше имя пользователя / пароль. [Ответ сервера: 535 5.7.8 Ошибка: ошибка аутентификации: код ошибки аутентификации (535)]
Я должен отметить, что это не проблема Gmail - я не могу пройти аутентификацию с ЛЮБОГО устройства или приложения через smtp. Однако я могу пройти аутентификацию с помощью инструментов на сервере и через telnet. . .
РЕДАКТИРОВАТЬ 2
Ошибки из /var/log/mail.log
2 февраля 14:52:42 Mysite postfix / smtpd [16527]: подключение с mail-ea0-f76.google.com [102.85.215.76] 2 февраля 14:52:43 Mysite postfix / smtpd [16527]: установлено анонимное соединение TLS от mail-ea0-f76.google.com [102.85.215.76]: TLSv1 с шифром ECDHE-RSA-RC4-SHA (128/128 бит) 2 февраля 14:52:43 Постфикс Mysite / smtpd [16527]: предупреждение: SASL Ошибка аутентификации: Ошибка проверки пароля 2 февраля 14:52:43 Mysite postfix / smtpd [16527]: предупреждение: mail-ea0-f76.google.com [102.85.215.76]: Ошибка аутентификации SASL PLAIN: ошибка аутентификации 2 февраля 14:52 : 43 Mysite postfix / smtpd [16527]: отключиться от mail-ea0-f76.google.com [102.85.215.76]
РЕДАКТИРОВАТЬ 3 Вот мой /etc/postfix/main.cf по запросу.
mydomain = mysite.com
biff = no
append_dot_mydomain = no
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:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_sasl_auth_enable = yes
# password maps will not work. Customer must provide credentials
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = mysite.localdomain, mysite, localhost.localdomain, localhost, mail.mysite.com, mysite.com
relayhost =
mynetworks = 127.0.0.0/8
inet_interfaces = all
mailbox_size_limit = 0
recipient_delimiter = +
myorigin = mysite.com
inet_protocols = all
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
myhostname = mail.mysite.com
home_mailbox = Maildir/
mailbox_command =
virtual_alias_domains = mysite.com
virtual_alias_maps = hash:/etc/postfix/virtual
На основании вопросов и комментариев sasl может быть настроен неправильно. Следующий контрольный список создан на основе Путеводитель по Убунуту предоставлено в вопросе.
Проверить файл/etc/postfix/sasl/smtpd.conf
, должно быть похоже на следующее
pwcheck_method: saslauthd
mech_list: plain login
Проверьте, установлен ли libsasl
dpkg -l | grep sasl
Должно быть следующее (номер версии может отличаться)
ii libsasl2-2 2.1.25.dfsg1-4 Cyrus SASL - authentication abstraction library
ii libsasl2-modules 2.1.25.dfsg1-4 Cyrus SASL - pluggable authentication modules
ii sasl2-bin 2.1.25.dfsg1-4 Cyrus SASL - administration programs for SASL users database
Убедитесь, что saslauthd запущен
ps -ef | grep sasl
Проверить saslauthd PWDIR
grep PWDIR /etc/default/saslauthd
Выход должен быть
PWDIR="/var/spool/postfix/var/run/saslauthd"
/etc/postfix/master.cf
Руководство Ubuntu не комментирует только одну строку
submission inet n - - - - smtpd
Попробуйте закомментировать весь раздел, включая следующие за ним варианты.
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Затем перезапустите postfix
sudo service postfix restart
Дважды проверьте свое имя для входа в smtp
Поскольку в руководстве не используется виртуальный пользователь, ваше имя для входа в smtp должно быть joe
только не joe@mysite.com
. Дважды проверьте почтовые клиенты на ваших устройствах / компьютерах / веб-службах (Gmail). НЕ используя ваш адрес электронной почты в качестве имени для входа в smtp. (Многие делают это за вас. Если так, вам придется изменить это вручную.)
Удалить карту паролей
Я считаю, что вы аутентифицируетесь с использованием локальной учетной записи Linux, а не виртуального пользователя. Удалите следующие строки в /etc/postfix/main.cf
# password maps will not work. Customer must provide credentials
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
Еще один способ - использовать порт 465 и smtps.
Вы упомянули, что пытаетесь отправить почту через SMTP из Gmail. Внешние общедоступные почтовые серверы, доставляющие почту в ваш домен, обычно не будут аутентифицироваться для вашего smtpd (конечно, они не будут передавать учетные данные, с которыми вы вошли в Gmail!). Ваш SMTP-сервер должен разрешать ретрансляцию на адреса в вашем домене без аутентификации (чтобы можно было получать входящую почту) и требовать аутентификации только для "исходящей" почты (которая ретранслируется в другие домены).
Из вашего комментария, похоже, вам требуется аутентификация для всей ретрансляции. У Gmail нет учетных данных, поэтому, конечно, он не сможет пройти аутентификацию на вашем почтовом сервере.