![无法通过 587 连接到 SMTP](https://linux22.com/image/605188/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20587%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20SMTP.png)
我正在 Ubuntu 上设置一个邮件服务器,基于:https://help.ubuntu.com/community/Postfix
目前,我既可以从服务器发送邮件,也可以从服务器接收邮件。但是,尝试通过 SMTP 从 gmail 发送电子邮件会因身份验证错误而失败。我已验证密码,确保端口已打开,并且能够远程登录到 IP 和端口。
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 的界面,并希望将我的所有邮件汇总到一个在线服务上。我可以在 gmail 上添加我的 POP3 帐户(设置 > 帐户 > 添加您自己的 POP3 邮件帐户)。成功通过我的服务器身份验证后,系统会询问我是否要通过我的服务器 smtp 发送电子邮件,我回答是。当我尝试登录时,我收到以下消息:
身份验证失败。请检查您的用户名/密码。[服务器响应:535 5.7.8 错误:身份验证失败:身份验证失败代码 (535)]
我应该指出,这不是 Gmail 的问题 - 我无法通过 smtp 从任何设备或应用程序进行身份验证。但是,我可以使用服务器上的工具以及通过 telnet 进行身份验证...
编辑2
/var/log/mail.log 中的错误
2 月 2 日 14:52:42 Mysite postfix/smtpd[16527]: 从 mail-ea0-f76.google.com[102.85.215.76] 连接 2 月 2 日 14:52:43 Mysite postfix/smtpd[16527]: 从 mail-ea0-f76.google.com[102.85.215.76] 建立匿名 TLS 连接:使用密码 ECDHE-RSA-RC4-SHA(128/128 位)的 TLSv1 2 月 2 日 14:52:43 Mysite postfix/smtpd[16527]: 警告:SASL 身份验证失败:密码验证失败 2 月 2 日 14:52:43 Mysite postfix/smtpd[16527]: 警告: mail-ea0-f76.google.com[102.85.215.76]: SASL PLAIN 身份验证失败:身份验证失败 2 月 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
答案1
SASL 身份验证检查表
根据问题和评论,sasl 可能未正确设置。以下检查清单基于以下情况创建:Ubunut 指南提供相关内容。
检查文件
/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"
Postfix 提交/587
/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
仅为,而不是[email protected]
。仔细检查您的设备/计算机/webservices(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
答案2
您提到您正在尝试通过 Gmail 的 SMTP 发送邮件。将邮件发送到您域的外部公共邮件服务器通常不会对您的 smtpd 进行身份验证(当然,它们不会传递您登录 Gmail 时使用的凭据!)。您的 SMTP 服务器应允许在不进行身份验证的情况下中继到您域内的地址(这样就可以接收传入邮件),并且仅要求对“传出”邮件(中继到其他域的邮件)进行身份验证。
从您的评论来看,您似乎要求对所有中继进行身份验证。Gmail 没有凭证可提供,因此当然无法向您的邮件服务器进行身份验证。
答案3
另一种尝试的方法是使用端口 465 和 smtps。