我正在尝试设置一个外发邮件服务器来发送电子邮件并将其转发给我们的 ISP。
在 /etc/postfix/main.cf 中,我将 myhostname 设置为 ourcompany.example.com,将 myorigin 和 mydomain 设置为 $myhostname。ourcompany.example.com 是可解析的。
但是查看 /var/log/maillog 中的日志,似乎 postfix 确实使用 myhostname 作为发送地址,但使用 getmyhostname() 中的任何内容,它被设置为内部 DNS 名称,因为这是一个内部服务器并且我们只发送电子邮件,但不处理传入的电子邮件。
有任何想法吗?
编辑:postconf-n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = example.com
myhostname = ourcompany.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.5/README_FILES
relayhost = smtp.grapevine.com.au
sample_directory = /usr/share/doc/postfix-2.6.5/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
ourcompany.example.com 和 example.com 都是公共域,任何人都可以解析,因此我的 ISP 应该可以解析。问题不在于域名,而在于 postfix 没有使用它,我收到如下日志:
May 26 10:23:22 localhost postfix/smtp[3910]: 449AF5803F6: to=<[email protected]>, relay=smtp.grapevine.com.au[203.129.32.140]:25, delay=63275, delays=63274/0.02/0.04/0.4, dsn=4.1.8, status=deferred (host smtp.grapevine.com.au[203.129.32.140] said: 450 4.1.8 <[email protected]>: Sender address rejected: Domain not found (in reply to RCPT TO command))
它使用 server.internal 而不是 $myorigin,server.internal 是您通过调用 gethostname() 获得的,它是一个内部主机名,无法在公共互联网上解析。
所以我的问题是,如何设置 postfix 以使用 example.com 而不是使用 gethostname()?我的想法是,仅当我将 myorigin、mydomain 和 myhostname 留空时才使用 gethostname(),但将它们设置为上述设置不会执行任何操作。
答案1
mydomain = example.com
myorigin = $mydomain
默认情况下,选项追加到 myorigin被设定为是的,这意味着所有没有域组件的外发邮件都将附加 myorigin 的值。
就您而言,那是域名,而不是主机名。
始终使用完全限定的地址发送邮件,即包含本地部分和有效的现有域/主机名部分。
如果由于某种原因您无法使用,请使用地址重写自述文件
答案2
通过端口 25 上的 telnet 连接到您的服务器,您将看到一个字符串,它明确地告诉您它是否实际使用了 myhostname。
我怀疑您只是没有正确设置地址伪装。