MTAとしてSendmailを使用するUbuntuWebサーバーがあります
現在、ウェブサーバーのドメイン外にメールを送信する場合。 example.comをgmailやexample.comドメイン外の他のメールのようなものに変換すると、完全に機能します。 sendmailデーモンにexample.comをローカルアドレスとして認識させたくない。他の電子メールが送信されるのと同じ方法でexample.comに送信したい。
たとえば、webserverのローカルユーザーを使用してこれらの電子メールを収集する場合はありません。
では、どうすればローカル配信を無効にできますか?
/ etc/hostsファイルからドメイン名を削除することでそれを行うことができます。 localhostの代わりに電子メールを送信するときにドメイン名(example.com)を使用するようにsenmailを構成する必要があります。
編集/etc/mail/sendmail.mc
以下を追加します。
MASQUERADE_AS(example.com)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(example.com)dnl
前:
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl
タイプm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
次に実行/sbin/service sendmail restart
変更する前に、編集したものをすべてバックアップしてください。
このソリューションは私とうまく機能しています!
Sendmailは、「w」クラスをローカル配信を試みるドメインとして扱います。デフォルトのCentOS構成には、次のような行が含まれています。
Cwlocalhost
# file containing names of hosts for which we receive email
Fw/etc/mail/local-Host-names
これは、「localhost」という名前とファイル「/ etc/mail/local-Host-names」の内容を含む「w」を指定します。 「/ etc/mail/local-Host-names」に「example.com」があると思われます。おそらくシステムのインストール中に設定されたものです。
これを確認するためのsendmailテストシステムがないため、ここでは確認できませんので、これを再確認することをお勧めします。また、sendmailの正確なインストールによって多少異なる場合があり、ディストリビューションやOSによって異なる場合があります。
これを行うには、ルールセット2にルールを追加します。sendmail.mcファイルに次を追加します。
LOCAL_RULE_2
R$* < $=w . > $* $#esmtp $@[MX server for example.com] $: $1 < @ $2 > $3
ルールの左側と右側はタブで区切られているため、コピーして貼り付けないでください。次に、sendmail.mcからsendmail.cfをビルドし、sendmailを再起動してテストします。
角かっこで囲まれたMXサーバー名をハードコーディングしたくない場合は、bestmxマップを使用できます。