このサーバーにはsendmailとpostfixの両方がインストールされています。 Sendmailは実行されていますが、正しく機能していません。 sendmailサービスを停止し、postfixを開始しました。ポート25でリッスンしているものの出力をチェックして、postfixのみが実行されていることを確認しました。
lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 119640 root 12u IPv4 28103863 0t0 TCP localhost:smtp (LISTEN)
master 119640 root 13u IPv6 28103864 0t0 TCP localhost:smtp (LISTEN)
次に、メールの送信をテストします。
echo "My message" | mail -s testing [email protected]
ルートの受信トレイには届きません。だから私は/ var/log/maillogのログを見て、sendmailがまだ使用されていることを確認します:
Feb 26 16:18:13 server sendmail[1582]: w1QLIC8N001582: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30233, relay=exchangeserver.domain. [x.x.x.x], dsn=2.0.0, stat=Sent (<201802262118.w1QLIC8N001582@[email protected]> Queued mail for delivery)
これはどのように可能ですか?
mail
プログラムはsendmail
を実行してメールを配信します(クライアントモードでは、プロセスでリスニングポートが開かれていません)。詳細については、 manページ をお読みください。 sendmail
変数を設定することにより、MDAを変更できます。
sendmail
代替メール配信システムを使用するには、このオプションを使用するプログラムの絶対パス名に設定します。これは注意して使用する必要があります。
$ sendmail=/usr/bin/someothersendmail mail [email protected]
Subject: asdf
... and so on
しかし、メールはMDAがsendmailのオプションを認識することを期待しているので、私は実際にはその使用法を理解していません。
もう1つの可能性は、sendmail
の代わりに 外部SMTPサーバー を使用することです。
$ echo "This is the message body and contains the message" | mailx -v \
> -r "[email protected]" \
> -s "This is the subject" \
> -S smtp="mail.example.com:587" \
> -S smtp-use-starttls \
> -S smtp-auth=login \
> -S smtp-auth-user="[email protected]" \
> -S smtp-auth-password="abc123" \
> -S ssl-verify=ignore \
> [email protected]
このログ行は、TCPポート25をリッスンしているものではありません。rootのcrontab
がsendmail経由で直接メールを送信しているようです。または、rootが所有する非標準のバックグラウンドプロセスです。 。