使用 mailx 命令时我应该知道什么

使用 mailx 命令时我应该知道什么

我正在使用mailx命令发送邮件,我尝试了两种方法。

mailx -s "This is Subject" toAddr < bodyFile.txt
mailx -r "fromAddr" -s "This is Subject" toAddr < bodyFile.txt

我收到同样的错误:

发送邮件:致命:参数 inet_interfaces:找不到 ::1 的本地接口

我想知道如何解决该错误以及以下问题:

  • fromAddressmailx默认采用什么?
  • 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。

相关内容