从 LAN 上的 Host1 向 Host2 发送电子邮件

从 LAN 上的 Host1 向 Host2 发送电子邮件

这可能是一个简单的问题,但如果我在终端中启动 HOST1(没有后缀/MTA),mail -s "test email" user@HOST2 < /dev/null以便可以将电子邮件发送到 HOST2(有后缀作为 MTA),为什么会出现以下错误:

mail: Null message body; hope that's ok
mail: cannot send message: Process exited with a non-zero status

通过这样做tail -f /var/log/mail.log我得到以下信息:

Dec  1 17:00:24 HOST1 postfix/sendmail[21790]: fatal: open /etc/postfix/main.cf: No such file or directory

这表明我也需要在 HOST1 上安装 Postfix 吗?这似乎有点矫枉过正...请注意,HOST2 正在端口 25 上接受 telnet:

user@HOST1:~$ telnet HOST2 smtp
Trying 192.168.2.5...
Connected to HOST2.domain.home.
Escape character is '^]'.
220 HOST2.domain.home ESMTP Postfix (Debian/GNU)

我知道我在这里遗漏了一些非常简单的东西,所以请耐心等待。我的问题是 HOST1 上是否也需要 MTA?

main.cf这些是我的HOST2 上的相关位:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = HOST2.domain.home
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = HOST2.domain.home, HOST2, localhost.localdomain, , localhost
relayhost = 
mynetworks = 192.168.2.0/24 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 192.168.2.5, 127.0.0.1 
inet_protocols = ipv4
myorigin = /etc/mailname
default_transport = error
relay_transport = error

请注意,HOST1 和 HOST2 位于同一子网 192.168.2.0/24 上。我已经/etc/hosts在两台机器上配置了各自的 LAN IP。不,我的目标是在 LAN 上安装 MTA,以便简单地让其他计算机将包含系统统计信息等的 crontab 电子邮件发送到集中式 MTA,然后我使用 Thunderbird 连接到 MTA 计算机并下载所有 LAN 系统电子邮件。如果当我从 HOST1 远程登录到 MTA 时,MTA 正在响应端口 25,那么为什么我不能使用该mail命令发送电子邮件?如果我必须在每台机器上安装 MTA,那就需要做很多工作……尽管这个帖子意味着我可能必须真正这样做。

答案1

mailx(又名邮件)可以直接使用 smtp 选项发送

mail -s "test email" -S smtp=HOST2 user@HOST2 < /dev/null

这告诉它不要使用 MTA,默认为 sendmail。

答案2

问题解决了。mail如果 HOST1 上未安装 MTA,则无法使用从 HOST1 到 HOST2 的命令。如果您在 HOST1 上使用 Thunderbird,它就可以工作,这符合我的目标,即演示 HOST2 上的 MTA 正在端口 25 上接受来自 LAN 的电子邮件

相关内容