2024-02-16
/etc/aliasesにて、root宛のメールを自社の自分のアドレスに転送設定しているのにローカルのMaildirに配送され転送されない問題が出たが、当方の場合以下のような要因であり、設定で解決した。
会社の唯一のメールサーバーが1つの場合こちらの基本設定1つすれば問題ないが、もう1つのサーバーでサブドメイン宛に来たメールを受け取りたい場合は、以下のようにする。
/etc/postfix/main.cf
myhostname = subml.example1155.jp mydomain = example1155.jp myorigin = $myhostname mydestination = $myhostname, localhost.$mydomain, localhost relay_domains = $mydestination
メインのメールサーバーでは
myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain relay_domains = $mydestination
としていたが、サブのメールサーバーでは
myorigin = $myhostname mydestination = $myhostname, localhost.$mydomain, localhost relay_domains = $mydestination
とするのがポイント。
myoriginとは、ローカルからmailコマンドなどでメール送信した場合Fromをどうするかという設定。
これが$mydomainなら、From: hogeuser@example1155.jp になるし、$myhostnameなら From: hogeuser@subml.example1155.jpと相手に表示される。
mydestinationとは、どの宛先のメールを受信対象とするかという設定。ここにマッチしなければリジェクトされる。
$mydomainを含めてしまうと、メイン宛に来たメールも誤受信してしまう。
relay_domainsはmydestinationにマッチしなかったアドレスで転送を許可したいホストを指定する。そんな事は普通許可しないので、relay_domainsは常にmydestinationと同一であるはずである。
ところで、このサブメールサーバーの/etc/aliasesで、
root: hogeuser@example1155.jp
と、root宛のメンテナンスメールをメインメールサーバのメインアドレスへ転送する設定をしている場合、メインのメールサーバーのように、
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
などとしてしまっていると、転送しようにも自分のドメインmydomainが含まれているので転送不要と判断され、結局ローカルのMaildirに配送されてしまうというエラーが起きる。
mydestination = $myhostname, localhost.$mydomain, localhost relay_domains = $mydestination
とするのは、その対策も兼ねている設定である。
追記 mynetworksの設定は超重要
mynetworksは上記のあらゆる設定に優先されるらしく、例えば、
mynetworks = 10.25.30.0/26, 127.0.0.1/32
などとしていると、上のmydestinationやrelay_domainsの設定いかんにかかわらず、10.25.30.0/26からのメール配信はどこへの宛先であっても受け入れてしまう(踏み台)ので注意。10.25.30.0/26は自分の管理下にあるローカルネットワークからの接続なんだから全然構わないじゃん、むしろそれがメール中継サーバの役割でしょ、といいたいところだが、このメールサーバがグローバルに直接つながれておらず、かつロードバランサーの配下でもないならそれで合っている、セーフ。
しかし、後者、このメールサーバがロードバランサー配下にある場合はどアウトな設定といってよい。ロードバランサーは外部に対してはグローバルなIPで待ち受け、内部に対しては10.25.30.0/26のようなプライベートマシンとして振る舞うものであるから、SMTPをロードバランスした際、上記のような設定で待ち受けてしまっていたら、外部からの接続を内部からと勘違いし、スパム踏み台サーバー確定となり、気づかず放置していると、あっという間に世界からスパムIP認定されGmailを始め完全ブロックされます。IPだけですめばいいが、IP帯域単位でブロックでもされようものなら、クラウドサービスから損害賠償請求もされかねない危険な設定であるので充分注意が必要。
外に出ていたりロードバランサー配下にあるメールサーバーは必ず、
mynetworks = 127.0.0.1/32
としておくこと。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Linux】iconv/libiconvをソースコードからインストール
Googleスプレッドシートを編集したら自動で更新日時を入れる
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
Windows11でMacのキーボードを使うには