Mailutils 产生错误无法发送消息

Mailutils 产生错误无法发送消息

在我的 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. 允许安全性较低的应用程序访问您的电子邮件帐户

前几年: https://support.google.com/mail/answer/78754

相关内容