在我的 Debian 服务器上,我安装了 exim4。我知道 MTA 可以工作,因为我可以使用 php 发送邮件,并且它使用中配置的帐户/etc/exim4/passwd.client
但是当我尝试使用命令行时
echo "test" | mail -s "test" [email protected]
我明白了
mail: cannot send message: Process exited with a non-zero status
$?设置为 36
另外 /var/log/exim4/mainlog 没有显示任何条目,只是我尝试从 php 发送邮件(成功)以及通常的开始和结束队列运行消息,这表明邮件命令甚至没有到达 MTA。
mail --version
mail (GNU Mailutils) 3.1.1
Copyright (C) 2007-2016 Free Software Foundation, inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
我在网上搜索过,发现人们在 postfix 配置方面遇到了问题,但由于我的 MTA 是 exim4 并且它本身工作得很好,我想知道问题出在哪里。
我已经设置了另外两台服务器,系统邮件工作正常,我在 cronjobs 中使用它。我也刚刚安装了 exim4 并进行了相应的配置,但从来没有遇到过这个问题。
答案1
太长了;可能是 32/64 位问题。尝试安装 bsd-mailx
我刚刚遇到了同样的问题。在“以前可以工作,但现在不行了。我没有改变任何东西”类别中。令人困惑的是,当电子邮件失败时,/var/log/exim4 中的任何日志中都没有显示任何内容。
我有几台 linux debian 机器,其中一些是无头的,全部运行 Debian Stable。有用的是,我发现在命令行上运行邮件可以在一台无头机器上运行,但不能在另一台机器上运行。这为我提供了一个有用的起点,可以对这两种设置进行并排比较,以了解可能存在的问题。
似乎没有什么明显的不同,所以沮丧地我做了一个
apt remove --purge exim4*
并重新安装。这没有效果。
长话短说,我查看了 /usr/bin/mail 中的邮件二进制文件,并“跟踪”它到 /etc/alternatives/mail ,发现在不同的计算机上它链接到不同的邮件客户端。在无法正常工作的机器上,它链接到:
lrwxrwxrwx 1 root root 23 Aug 23 2017 /etc/alternatives/mail -> /usr/bin/mail.mailutils
但在工作机器上它链接到:
lrwxrwxrwx 1 root root 18 Jun 15 2015 /etc/alternatives/mail -> /usr/bin/bsd-mailx
我在非工作机器上安装了bsd-mailx,它自动更新了/etc/alternatives中的链接,问题就消失了。邮件现在可以使用。
就在我庆幸自己的时候,我看了另一台工作机器,发现它也链接了/etc/alternatives/mail -> /usr/bin/mail.mailutils
——所以这似乎推翻了任何关于它是 mailutils 的理论。
我查看了两个安装(抱歉无法获取格式):
非工作机:
dougie@nick:~$ dpkg -l | grep mailutils
ii libmailutils5:i386 1:3.1.1-1 i386 GNU Mail abstraction library
ii mailutils 1:3.1.1-1 i386 用于处理邮件的 GNU mailutils 实用程序 ii mailutils-common 1:3.1.1-1 GNU mailutils 的所有通用文件
工作机:
dougie@skye:~$ dpkg -l | grep mailutils
ii libmailutils5:amd64 1:3.1.1-1 amd64 GNU Mail abstraction library
ii mailutils 1:3.1.1-1 amd64 用于处理邮件的 GNU mailutils 实用程序 ii mailutils-common 1:3.1.1-1 GNU mailutils 的所有通用文件
所以,这只是一种预感,但这可能与安装的是 32 位还是 64 位有关。我的解决方法是安装 bsd-mailx。
答案2
我的也是64位机器,报错如下
$ echo test | mail -s "testing ssmtp setup" [email protected]
mail: cannot send message: Process exited with a non-zero status
但是当我关注 @Dougie Nisbet 并安装 bsd-mailx 时,它的反应是
$ echo test | mail -s "testing ssmtp setup" [email protected]
send-mail: Authorization failed (534 5.7.14 https://support.google.com/mail/answer/78754 5-v6sm30064941pgc.86 - gsmtp)
Can't send mail: sendmail process failed with error code 1
我知道这不是一个答案。但由于我无法对 @Dougie Nisbet 的答案发表评论,我在这里写下这篇文章是为了避免其他人遵循上述答案。
答案3
请查看 Postfix 错误日志文件,看起来电子邮件未发送,因为授权失败。
请确保以下事项: 1. 检查您的密码( SMTP 身份验证密码) 2. 允许安全性较低的应用程序访问您的电子邮件帐户