我正在尝试配置我的电子邮件服务器,参考以下链接:在 Postfix 中通过 SMTP 中继发送邮件 - 使用 Webmin。 我用了山魈在我的情况下是 smtp 服务器。在配置主服务器之前,我还配置了一个 vagrent 实例。但是当我尝试使用以下命令从服务器(vagrant 和主服务器)发送电子邮件时:
sendemail -f [email protected] -t <myemail>@gmail.com -m "Message Body" -u "Message Subject"
消息在 Postfix 中排队,永远无法到达目的地。
/var/log/mail.log
文件显示:
precise64 postfix/smtpd[16542]: connect from localhost[127.0.0.1]
precise64 postfix/smtpd[16542]: 116033A4253: client=localhost[127.0.0.1]
precise64 postfix/cleanup[16545]: 116033A4253: message-id=<621108.689435886-sendEmail@precise64>
precise64 postfix/qmgr[12672]: 116033A4253: from=<[email protected]>, size=916, nrcpt=1 (queue active)
precise64 postfix/smtpd[16542]: disconnect from localhost[127.0.0.1]
precise64 postfix/smtp[16546]: Untrusted TLS connection established to smtp.mandrillapp.com[54.195.231.78]:587: TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)
precise64 postfix/smtp[16546]: 116033A4253: host smtp.mandrillapp.com[54.195.231.78] said: 454 4.7.1 <[email protected]>: Relay access denied (in reply to RCPT TO command)
precise64 postfix/smtp[16546]: Untrusted TLS connection established to smtp.mandrillapp.com[54.247.27.189]:587: TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)
precise64 postfix/smtp[16546]: 116033A4253: to=<[email protected]>, relay=smtp.mandrillapp.com[54.247.27.189]:587, delay=4.3, delays=0.06/0.01/4/0.28, dsn=4.7.1, status=deferred (host smtp.mandrillapp.com[54.247.27.189] said: 454 4.7.1 <[email protected]>: Relay access denied (in reply to RCPT TO command))
以及/etc/postfix/main.cf
文件:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = precise64
# myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = precise64, localhost.localdomain, , localhost
relayhost = smtp.mandrillapp.com:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# mynetworks = example.com
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination
virtual_alias_maps = hash:/etc/postfix/generic
smtp_tls_loglevel = 1
smtp_tls_security_level = encrypt
smtp_sasl_security_options = noanonymous
smtp_generic_maps = hash:/etc/postfix/generic
需要一些建议。这里出了什么问题?我对邮件服务器配置很陌生。如果有愚蠢的错误,请原谅我。
答案1
这里的问题是,你配置了服务器,使其将所有出站电子邮件转发到服务器,即smtp.mandrillapp.com
。而该服务器却不接受转发你的邮件。
我不了解这家公司,但我猜测他们只转发经过身份验证的客户的邮件,而您并未登录。
你的 main.cf 中应该有类似以下行的内容
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/remote_passwords
smtp_sasl_security_options = noplaintext,noanonymous
smtp_sasl_tls_security_options = noanonymous
该文件/etc/postfix/remote_passwords
看起来应类似于
smtp.mandrillapp.com:587 login:password
使用 mandrillapp 的登录名/密码。
另外,我在你的配置文件中看到一个smtpd_sasl_auth_enable
(注意 smtp 末尾的“d”),它只在你希望客户端登录到你的服务器时才相关,而我没有看到足够的配置。你应该确保它是必要的。
答案2
您在哪里定义 Mandrill API 密钥?我认为您缺少smtp_sasl_password_maps
中的指令main.cf
。请参见以下内容:
答案3
事实证明,在这种情况下,端口实际上非常重要,您可以在其中指定中继的用户名/密码组合。我的邮件服务器挂断了很长时间,因为我没有将 :588 附加到我使用的服务器名称的末尾。真是太麻烦了。