私のDebianサーバーにはexim4がインストールされています。 PHPを使用してメールを送信でき、MTAが設定されたアカウントを使用しているため、MTAが機能していることがわかります。/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からメールを送信しようとする試み(成功的に)と、一般的な開始と終了のキュー実行メッセージのみが表示されます。これは、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であり、それ自体がうまく動作するので、問題が何であるかを知りたいと思います。
私は2つの異なるサーバーを設定し、システムメールはうまく機能し、cronjobで使用されます。私はexim4をインストールしてそれに応じて設定しましたが、この問題は発生しませんでした。
答え1
長すぎます。 32/64ビットの問題かもしれません。 bsd-mailxをインストールしてみてください
ちょうど同じ問題が発生しました。 「以前は動作していましたが、今は動作しません。何も変更していません。」カテゴリにあります。混乱してもメールが失敗した場合、/var/log/exim4 のログには何も表示されません。
私はいくつかのLinux Debianシステムを持っています。幸い、コマンドラインからメールを実行すると、ヘッドレスコンピュータでは動作しますが、他のコンピュータでは動作しないことがわかりました。これは、考えられる問題を理解するために2つの設定を並べて比較できる便利な出発点を提供しました。
目立つ違いはないようで、苦しくて作ってみました。
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. セキュリティレベルの低いアプリケーションがメールアカウントにアクセスできるようにします。