На моем сервере debian у меня установлен exim4. Я знаю, что MTA работает, потому что я могу отправлять письма с помощью php и он использует учетную запись, настроенную в /etc/exim4/passwd.client
Однако когда я пытаюсь в командной строке
echo "test" | mail -s "test" me@example.com
я получаю
mail: cannot send message: Process exited with a non-zero status
$? установлен в 36
Также /var/log/exim4/mainlog не показывает никаких записей, только (успешно) отправленные письма, которые я пытался отправить с php и обычные сообщения о начале и конце очереди, что указывает на то, что команда mail даже не достигает 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 и настроил его соответствующим образом и никогда не сталкивался с этой проблемой.
Пожалуйста, просмотрите файл журнала ошибок Postfix. Похоже, электронное письмо не было отправлено из-за сбоя авторизации.
Убедитесь в следующем: 1. Проверьте свой пароль (Пароль аутентификации SMTP )2. Разрешите менее безопасным приложениям доступ к вашей учетной записи электронной почты
.TLDR; может быть проблема 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 all Общие файлы для 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 all Общие файлы для GNU mailutils
Итак, это всего лишь догадка, но, возможно, это связано с тем, 32-битная или 64-битная версия установлена. И обходной путь для меня состоял в том, чтобы установить bsd -mailx.
У меня также 64-битная -машина, которая выдавала ошибку, как показано ниже
$ echo test | mail -s "testing ssmtp setup" mymail@gmail.com
mail: cannot send message: Process exited with a non-zero status
Но когда я подписался на @Dougie Nisbet и установил bsd -mailx, он отреагировал как
$ echo test | mail -s "testing ssmtp setup" mymail@gmail.com
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, я написал это здесь, чтобы уберечь других от следования приведенному выше ответу.