无法通过587连接到SMTP

我正在Ubuntu上设置一个邮件服务器: https : //help.ubuntu.com/community/Postfix

目前,我可以发送和接收来自服务器的电子邮件。 但是,尝试通过SMTP从Gmail发送电子邮件会导致身份validation失败。 我已经validation了我的密码,确保端口是开放的,并且能够telnet到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 

而且,testing我的login信息:

 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 

任何想法,为什么我不能远程configuration我的SMTP发送电子邮件?

编辑

我优先考虑Gmail的界面,并想在一个在线服务上汇总我所有的邮件。 我可以在Gmail上添加我的POP3帐户(设置>帐户>添加您自己的POP3邮件帐户)。 成功通过我的服务器进行身份validation后,我被问到是否想通过我的服务器smtp发送电子邮件,对此我说是的。 当我尝试login时,我收到以下消息:

validation失败。 请检查您的用户名/密码。 [服务器响应:535 5.7.8错误:authentication失败:authentication失败码(535)]

我应该注意到,这不是一个gmail问题 – 我无法通过任何设备或应用程序通过smtp进行身份validation。 但是,我可以使用服务器上的工具和telnet进行身份validation。 。 。

编辑2

来自/var/log/mail.log的错误

Feb 2 14:52:42 Mysite postfix / smtpd [16527]:connect from mail-ea0-f76.google.com [102.85.215.76] Feb 2 14:52:43 Mysite postfix / smtpd [16527]:build立匿名TLS连接来自mail-ea0-f76.google.com [102.85.215.76]:带密码的TLSv1 ECDHE-RSA-RC4-SHA(128/128位)Feb 2 14:52:43 Mysite postfix / smtpd [16527]:警告:SASL身份validation失败:密码validation失败Feb 2 14:52:43 Mysite postfix / smtpd [16527]:warning:mail-ea0-f76.google.com [102.85.215.76]:SASL PLAIN身份validation失败:身份validation失败Feb 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 

SASLauthentication检查清单

根据问题和意见,sasl可能没有正确设置。 下面的检查清单是根据问题提供的Ubunut指南创build的。

  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. 检查saslauthd PWDIR

     grep PWDIR /etc/default/saslauthd 

    输出应该是

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

后缀提交/ 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 

    然后重新启动后缀

     sudo service postfix restart 
  2. 仔细检查你的smtplogin名

    由于该指南并未使用虚拟用户,因此您的smtplogin名应仅为joe ,而不是[email protected] 。 仔细检查您的deivces / computers / webservices(gmail)上的电子邮件客户端是否使用您的电子邮件地址作为smtplogin名。 (很多人都这样做,如果是这样的话,你将不得不手动改变它。)

  3. 删除密码地图

    我相信你是对本地Linux帐户进行身份validation,而不是虚拟用户。 删除/etc/postfix/main.cf的以下行

     # password maps will not work. Customer must provide credentials smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 

您提到您正试图通过Gmail从Gmail发送邮件。 向您的域发送邮件的外部公共邮件服务器通常不会对您的smtpd进行身份validation(当然,他们不会将您login到gmail的凭据传递给!)。 您的SMTP服务器应该允许在没有身份validation的情况下转发到您的域中的地址(这样可以接收到收到的邮件),并且只需要validation“传出”邮件(即被转发到其他域)。

从你的评论看来,你要求所有的中继authentication。 Gmail没有提供凭据,所以当然无法对您的邮件服务器进行身份validation。

另一个尝试的方法是使用端口465和smtps。

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