无法通过 587 连接到 SMTP

无法通过 587 连接到 SMTP

我正在 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 指南提供相关内容。

  1. 检查文件/etc/postfix/sasl/smtpd.conf,应该如下所示

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. 检查 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
    
  3. 检查 saslauthd 是否正在运行

    ps -ef | grep sasl
    
  4. 检查 saslauthdPWDIR

    grep PWDIR /etc/default/saslauthd
    

    输出应该是

    PWDIR="/var/spool/postfix/var/run/saslauthd"
    

Postfix 提交/587

  1. /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
    
  2. 仔细检查您的 smtp 登录名

    由于本指南未使用虚拟用户,因此您的 smtp 登录名应joe仅为,而不是[email protected]。仔细检查您的设备/计算机/webservices(gmail) 上的电子邮件客户端是否不是使用您的电子邮件地址作为 smtp 登录名。(许多人会为您这样做。如果是这样,您必须手动更改它。)

  3. 移除密码图

    我相信您是针对本地 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。

http://ubuntuforums.org/showthread.php?t=1946910

相关内容