我想安装 Postfix 来从本地主机发送电子邮件或/和将电子邮件转发到外部邮件网关(例如 sendgrid)。但是,我不想收到邮件使用这台机器,并且我不想接受来自其他机器的连接。
安装 Postfix 时,默认为“Internet 站点”,此配置确实非常适合我的目的。但我的理解是,有了这个设置,我的 Postfix 也可以接收邮件。
那么,我应该怎么做才能禁用不需要的功能?对于我的目的而言,Postfix 配置有没有什么最佳实践?
答案1
关于安全性,由于您需要为内部客户端中继,因此您必须允许 Postfix 接收邮件。您可以设置:
mynetworks_style = subnet
子网内main.cf
没有主机可以使用 Postfix 作为传输器,因此您不会收到任何来自外部的邮件。Mynetworks_style 还有一个class
选项,您可以在其中定义子网类,形式如下
mynetworks = x.x.x.x/y p.p.p.p/q
为允许的主机。
从技术上来说,可以通过 Gmail 等发送邮件,但我认为免费电子邮件服务不允许这样做。以下是我为 Gmail 所做的:
另外main.cf
:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtpd_tls_auth_only = no
smtp_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
就我的情况而言,$mydomain
这是因为我的 LAN 域与我的 Google Apps 域相同。gmail.com
如果您的情况并非如此,您可能需要添加或直接输入 Google Apps 域名。
您还需要为用户创建一个哈希:
[smtp.gmail.com]:587 [email protected]:s3cr3+pA55
[email protected]
您的 FQ 用户名在哪里,以及s3cr3+pA55
您的实际密码(明文形式)。您输入该字符串/etc/postfix/sasl/passwd
并通过执行以下操作生成哈希:
$ sudo postmap /etc/postfix/sasl/passwd
最后,请注意,尽管我只向自己域内的用户发送了邮件,但一段时间后 Google 屏蔽了我的发件人用户名,并拒绝对此采取任何措施。看起来,通过他们的服务器自动发送邮件(在我的情况下是服务器通知)是被禁止的,尽管从他们的条款中很难解读这一点。
答案2
听起来您想将 Postfix 设置为“卫星系统”而不是“互联网站点”。
sudo dpkg-reconfigure postfix
“卫星系统:所有邮件都被发送到另一台称为‘智能主机’的机器进行投递。”
dpkg-reconfigure 将引导您完成配置并相应地更新 /etc/postfix/main.cf。
智能主机将是您的外部邮件网关。您需要确保将其设置为接受来自此卫星系统的邮件。(对于 Postfix 外部邮件网关,这意味着将卫星系统添加到智能主机上的 mynetworks。)