编辑
我想澄清的是,我不希望我生成的电子邮件存储在此服务器上。我希望此服务器仅发送电子邮件,但不接收电子邮件,并且我的发件人地址应显示为我的注册域名。
原始帖子
我想将我的家庭服务器设置为电子邮件服务器,用于发送 cron 作业和计划报告。我不打算从这台机器接收电子邮件。我有一个静态 IP 和注册域名。我为我的域名创建了一个 mx 记录,即 mail.example.net,并为 mail.example.net 创建了一个 HOST(A) 记录。我已检查并发现 DNS 方面没有问题。我这样做是因为如果我省略此步骤,大多数(或所有?)邮件服务器都不会接受我的邮件。
这是我的 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
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = localdomain, localhost, localhost.localdomain, localhost
relayhost =
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
mailbox_size_limit = 51200000
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4
myorigin = /etc/mailname
/etc/mailname
正确指向example.net
(不是 mail.example.net 我认为这是正确的)
但是我的 mailq 现在看起来像这样
673CCB6EE9B 451 Wed Jul 19 11:29:07 [email protected]
(delivery temporarily suspended: connect to mail.example.net[my.ip.was.here]:25: Connection refused)
[email protected]
6B155B6EF04 770 Wed Jul 19 12:45:13 [email protected]
(delivery temporarily suspended: connect to mail.example.net[my.ip.was.here]:25: Connection refused)
[email protected]
52EA3B6EF01 771 Wed Jul 19 12:15:57 [email protected]
(delivery temporarily suspended: connect to mail.example.net[my.ip.was.here]:25: Connection refused)
[email protected]
如您所见,postfix 出于某种原因尝试访问我的公共 IP 地址上的端口 25 来发送电子邮件,但由于我不想接收电子邮件,因此我的调制解调器中未启用端口 25。我想我遇到了某种配置错误。
答案1
这不是针对您的确切问题的答案,但可能是针对您的实际问题的解决方案。
您需要将其设置为所谓的 Null Client。基本上,仅用于发送。在 Postfix 中,您已选择了一个功能齐全的 MTA,它可以做更多事情。我曾经遇到过类似的情况,并决定将 Postfix 仅用于这一小部分任务是没有意义的。这有点像买车不打算开,只是为了避难,而一个便宜且较小的棚子就足够了。
除了设置复杂性之外,还需要考虑资源。还有安全性。所以对我来说,找到一个较小的软件包是有意义的,它不是成熟的 MTA,但只发送我的警报,主要是 Fail2Ban 和 Monit。
我选择了MSMTP:http://msmtp.sourceforge.net/doc/msmtp.html
多年来,我一直在生产机器上使用它。我已将其设置为只发送给我自己。由于发件人电子邮件未设置为真正的邮箱,因此它无法通过许多反垃圾邮件措施,因此您必须将其列入您想要接收邮件的白名单。
如果您想继续使用 Postfix,您需要遵循空客户端配置设置文档:
http://www.postfix.org/STANDARD_CONFIGURATION_README.html#null_client
答案2
Postfix 正在连接到您的公共 IP ( mail.example.net[xx.xx.xx.xx]:25: Connection refused)
),因为
它尝试发送邮件至(而不仅仅是发件人)
[email protected]
example.net
不在它的范围内(实际上这mydestination
似乎是正确的),并且MX
你对该IP的积分记录example.net
。
您需要
- 将目标地址更改为此域内的其他地址,或者
- 修复
MX
指向应该处理邮件的服务器example.net
。
您说的是...
我已为我的域名 mail.example.net 创建了 mx 记录,并
A
为 创建了 HOST() 记录mail.example.net
。我已检查并发现 DNS 方面没有问题。我这样做是因为如果我省略此步骤,大多数(或所有?)邮件服务器都不会接受我的邮件。
这实际上可能是您的问题。检查针对的是HELO
vs. A
vs. PTR
;认为原始服务器必须位于MX
记录中是错误的:发送和接收邮件不是一回事!
你可能想学习发件人策略框架防晒指数 (SPF)。可以告诉接收方此服务器是 的允许发送方example.net
,例如
example.net. TXT "v=spf1 ip4:198.51.100.5 include:aspmx.googlemail.com -all"
在此示例中,允许发送 Gmail 和 IP 地址198.51.100.5
,但拒绝发送其他地址。