我正在使用mailx命令发送邮件,我尝试了两种方法。
mailx -s "This is Subject" toAddr < bodyFile.txt
mailx -r "fromAddr" -s "This is Subject" toAddr < bodyFile.txt
我收到同样的错误:
发送邮件:致命:参数 inet_interfaces:找不到 ::1 的本地接口
我想知道如何解决该错误以及以下问题:
fromAddress
mailx默认采用什么?- mailx默认使用什么邮件传输代理地址?
- 从哪里改变这些值?
答案1
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# more /var/log/maillog
Sep 1 17:07:50 izuf6cj2o216xp postfix/sendmail[25307]: fatal: parameter inet_interfaces: no local interface found for ::1
解决了:
vim /etc/postfix/main.cf
#inet_interfaces = localhost
inet_interfaces = all
然后
service postfix start
答案2
Mailx
只是一个命令行工具,用于将邮件传递到您的邮件传输代理(MTA;无论您安装了什么:sendmail、exim,...)。它通过调用命令来做到这一点发送邮件(通常是/usr/sbin/sendmail
)。您的 MTA 提供此命令来发送邮件。
在您的情况下,它尝试联系本地主机 ( ) 上环回设备的 IPv6 地址上的服务器::1
,但找不到任何内容。因此,要么您的 MTA 配置不正确(使用 IPv6 而不是 IPv4),要么您的 IPv6 网络设置不正确(环回接口上没有 ::1 地址)。
默认从-address 是您的用户名,MTA 添加您在 MTA 中配置的任何域名(并且可以根据各种标准进一步重写此域名,例如它联系哪个邮件服务器来传递邮件,如果您已为其设置了规则) 。
您可以通过配置 MTA 来更改这些值。
我不明白“mailx 默认采用 MTA 地址是什么”这个问题。如果您的意思是“它使用哪个 MTA”,正如我所说,它只是调用发送邮件命令,因此它使用您已安装的提供此命令的任何 MTA 软件包。
答案3
可能您没有正确配置运行 mailx 默认情况下使用的本地 MTA。
您可以mailx
通过您的公共 smtp 帐户直接发送电子邮件。
echo "This is the text." | \
env MAILRC=/dev/null \
from=from@your_domain \
smtp=your_smtp_server:port \
smtp-auth-user=your_login \
smtp-auth-password=your_pwd \
smtp-auth=login \
smtp-use-starttls=yes \
mailx -n -s "test 1" to@domain
或者安装并设置本地 MTA,例如 postfix 或 exim。如今,一些发行版不再默认安装 MTA。