我正在使用 sendmail 从文本文件发送一封非常简单的电子邮件。以下是文本文件:
to:[email protected]
from:[email protected]
subject:Testing
test test test
我发送的内容如下:
sendmail -t < mail.txt
我运行 sendmail 的服务器是 hostname.tld。这是 /etc/hosts:
12.34.56.78 hostname hostname.tld
127.0.0.1 localhost
其中 hostname.tld 是服务器的 fqdn,12.34.56.78 是服务器的公共 IP。/etc/hostname 仅包含 hostname.tld
当我收到电子邮件时,我收到以下标题:
Received: from hostname.tld (hostname.tld [127.0.0.1])
我不需要 127.0.0.1,我希望有公共 IP,但无论我做什么,都无法让 sendmail 使用它。我还编辑了 /etc/mail/sendmail.mc,使其包含以下行:
define(`confDOMAIN_NAME', `hostname.tld')dnl
但它什么也没做。
我读过很多帖子,人们都遇到了类似的问题,但似乎没有办法解决。我该怎么办?
答案1
这是我的解决方案:
在 /etc/hosts 中:
12.34.56.78 hostname.tld
127.0.0.1 localhost
/etc/mail/submit.mc:
FEATURE(`msp', `[12.34.56.78]', `25')dnl
(最初它的 IP 是 127.0.0.1,而不是我的公共 IP)
/etc/mail/sendmail.mc:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=12.34.56.78')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=12.34.56.78')dnl
(这两行最初都是 127.0.0.1,更改它会使 sendmail 监听你的公共 IP 而不是本地主机)。
运行命令:
make -C /etc/mail
重新加载sendmail:
service sendmail reload
发送测试邮件后:
sendmail -t < mail.txt
我现在不喜欢的标题是:
Received: from hostname.tld (hostname.tld [12.34.56.78])
并且标题中没有任何地方提到 localhost 或 127.0.0.1
答案2
当您使用本地计算机上的脚本发送电子邮件时,它是从本地主机收到。公网 IP 将显示在下Received:
一行。