我们在 Ubuntu 15.10 上使用 Postfix 2.11.3
这是配置文件:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = server.ip-5.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
virtual_alias_domains =
virtual_alias_maps = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = $mydomain
mynetworks = 0.0.0.0
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
home_mailbox = Maildir/
soft_bounce = yes
header_checks = regexp:/etc/postfix/header_checks
smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination,permit
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination,permit
现在,我从我们的域“ip-5.ru”内的本地用户向本地用户发送邮件,
发送和传递成功。
[电子邮件保护]->[电子邮件保护]
如果我将邮件发送到连接到远程邮箱的本地别名,那么也会成功。
[电子邮件保护]->[电子邮件保护]->[电子邮件保护]
当我从本地用户向 gmail.com 中的远程邮箱发送邮件时出现了问题。
[电子邮件保护]->[电子邮件保护]
我得到:
NOQUEUE: reject: RCPT from unknown[xx.xx.xx.xx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[yy.yy.yy.yy]>
我读到我们需要使用 SSL 来获得中继权限...
那么为什么我可以通过本地别名进行中继?
SSL 现在的问题是配置起来非常困难... 我尝试配置它并得到很多错误...
我想让你注意,用户名和密码是为 SMTP 身份验证提供的,所以我的服务器不是垃圾邮件和无限制中继的目标,我只是想找到一些绕过 SSL 的方法!
是否可以从本地邮箱直接发送到远程邮箱,而无需创建别名和使用 SSL?
答案1
我猜你的意思是 SASL。问题是,如果你的邮件服务器不使用某种限制/控制(允许客户端将邮件发送到其他域),那么它就会变成开放中继。这意味着任何人都可以使用你的电子邮件服务器发送垃圾邮件。这当然是意料之外的。这就是为什么你需要使用某种限制来限制谁可以使用服务器中继邮件。请阅读下文了解更多信息:
http://www.postfix.org/SMTPD_ACCESS_README.html#relay
中继控制、垃圾邮件控制和每用户策略
在遥远的过去,互联网是一个友好的环境。邮件服务器很乐意代表任何人将邮件转发到任何目的地。在今天的互联网上,垃圾邮件发送者滥用转发来自任意系统的邮件的服务器,被滥用的系统最终会被列入反垃圾邮件发送者的黑名单。例如,请参阅 http://www.mail-abuse.org/和其他网站。
默认情况下,Postfix 对邮件中继采用适度限制的方法。Postfix 仅转发来自受信任网络中的客户端、已使用 SASL 进行身份验证的客户端或配置为授权中继目标的域的邮件。有关默认邮件中继策略的描述,请参阅 postconf(5) 手册页中的 smtpd_relay_restrictions 参数以及从中引用的信息。
如上所述,对于来自特定 LAN 的客户端,另一种方法是使用mynetworks
postfix 提供的选项。在这里,您可以定义一个网络并允许来自该网络的用户无需身份验证即可进行中继。
您的配置需要调整以允许 SASL 身份验证。添加以下选项以启用 sasl 身份验证。
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
然后调整中继限制:
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,permit