web-dev-qa-db-ja.com

FreeBSDのSendmailは、認証なしで外部SMTPを使用して送信します

最初は混乱するかもしれませんが、ごめんなさい。

兄は、自分のWebサイトをセルフホストし、ホスティングサービスを使用しないことを望んでいたため、彼のためにWebサーバーを作成するように依頼しました。これに伴う問題はISPです。動的IPスキームに加えて、ポート25での発信TCP接続をブロックし、代わりに認証を必要としない外部サーバーを提供します。

Webサーバーのセットアップでは、仮想マシンよりも刑務所を好むか、ホストマシンで直接サービスを実行するため、FreeBSDを選択しました。これにより、バックアップとセキュリティ管理がはるかに簡単になります(少なくとも私にとっては)。

今のところsendmailを完全に無効にしましたが、ユーザーが必要に応じてパスワードの回復機能を利用できるように、もう一度有効にしたいと思います。私の質問は、ユーザーまたはパスワード認証なしで外部SMTPを使用するようにsendmailを構成するにはどうすればよいですか?

よろしくお願いします!

1
Comrade Zed

あなたの投稿へのコメントは両方とも正しい方向に進んでいます。これがより本格的な対応です。

(TL;下部のDR)

Rootとして、_/etc/mail_ディレクトリの安全コピーを作成することから始めます。

_# cd /etc
# cp -Rp mail mail.safety
_

この例では、メール構成をカスタマイズしていないことを前提としています。実際、既存のsendmailファイルを「ゼロ化」して、クリーンな状態から開始できるようにします。 。カスタマイズがある場合は、心配しないで、それらのファイルのバックアップを作成することから始めました。後でカスタマイズを再適用できます。

最初にmailディレクトリに移動し、既存の_*.cf_ファイルを削除します。

_# cd mail
# rm *.cf
_

FreeBSDシステムでは、$(hostname).mcファイルと$(hostname).submit.mcファイルに加えて、_freebsd.mc_ファイルと_freebsd.submit.mc_ファイルが一緒に配布されるのが一般的です。 OS。単純なホスト名lsを持つシステムでのtestの出力は次のとおりです。

_# ls *.mc
freebsd.mc         freebsd.submit.mc     test.mc         test.submit.mc
_

おそらく同様のファイルが表示されますが、自分のマシンのホスト名を参照しています。この背後にある理由は、_freebsd*.mc_ファイルがsendmail構成の基本的な開始点を表すためです。 $(hostname)*.mcファイルは、(潜在的に)システムに固有のカスタマイズされたファイルです。 OSのアップグレードは_freebsd*.mc_ファイルを上書きする可能性がありますが、ホスト固有のファイルには影響しないため、慎重にカスタマイズした構成がOSのアップグレードによって上書きされることはありません。その掘り出し物のあなたの部分は、$(hostname)*.mcファイルへの変更を制限し、_freebsd*.mc_参照ファイルをそのままにしておく必要があるということです。

このチュートリアルの残りの部分では、文字列testを使用して、ファイル名の一部としてマシンのホスト名を表示する場所を表します。

それでは、そのような背景を踏まえて、続けましょう。

$(hostname)*.mcファイルを削除して、Makefileが正常な_freebsd*.mc_ファイルから構成を複製するようにします。

_# rm -v $(hostname)*.mc
test.mc
test.submit.mc
_

古い構成ファイルを削除したので、makeを実行して、OSが提供する_freebsd.mc_および_freebsd.submit.mc_ファイルに基づいて新しい構成ファイルを作成しましょう。

_# make
cp -f freebsd.mc test.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.mc > test.cf
cp -f freebsd.submit.mc test.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.submit.mc > test.submit.cf
_

それは実際には私たちが必要とするより少し多くのことをします、しかしそれは大丈夫です。重要なことは、Makefileが_freebsd.mc_を$(hostname).mcにコピーし、_freebsd.submit.mc_を$(hostname).submit.mcにコピーしたことです。

それでは、$(hostname).mcファイルを調べてみましょう。 (私がFreeBSD 12で探しているファイルの)89行目またはその近くには、以前の著者が言及した_SMART_Host_ディレクティブがあります。

_# grep SMART_Host $(hostname).mc
dnl define(`SMART_Host', `your.isp.mail.server')
_

行の先頭にある「dnl」は、その行がコメントアウトされていることを意味します。 DNLは、「改行まで破棄(または無視)」の略であると考えることができます。

_.mc_ファイルを編集します。

_# vi $(hostname).mc
_

その行を次のように変更します。

_define(`SMART_Host', `smtp.example.com')
_

ここで、_smtp.example.com_は、ISPから使用を指示されたサーバーのDNS名です。必ず「dnl」も削除してください。ファイルを保存して終了します。

次に、makeを実行して、$(hostname)*。cfファイルを再生成します。

_# make
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.mc > test.cf
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.submit.mc > test.submit.cf
_

_make install_を実行して、$(hostname)*.cfファイルをsendmailが期待する標準名(_sendmail.cf_および_submit.cf_)にコピーします。

_# make install
install -m 444 test.cf /etc/mail/sendmail.cf
install -m 444 test.submit.cf /etc/mail/submit.cf
_

Sendmailを再起動します。

_# make restart
_

最後に、_/var/log/maillog_を調べて、エラーがないことを確認します。


TL; DR

_# cd /etc
# cp -Rp mail mail.safety
# cd mail
# rm *.cf
# rm -v $(hostname)*.mc
# make
# vi $(hostname).mc
_

_SMART_Host_行を次のように変更します。

_define(`SMART_Host', `smtp.example.com')
_

続行します:

_# make
# make install
# make restart
_
1
Jim L.