|
||
|
Postfixで送信時にメールアドレスのドメインを付け替えるPostfixでメール送信時に自ドメイン名を別ドメイン名に付け替える設定です。 どのような用途で用いるかと言えば、メールドメインの移行などで使えます。 新旧メールドメインが並行運用されており、内部は旧ドメインで依然運用しているが、外部への送信には 新ドメイン名を使用する。 こうすればシステム移行が段階的に進められます。 (宛先によってドメイン付け替えを変更する場合は、別項「特定ドメイン宛のメールだけドメイン付け替えをする」で解説しています) メールのFrom部分(と、Return-Path部分)が書き換えられます。 相手が何も考えずメール返信をしてくれても、自然と新ドメインが使用されます。 本家情報 http://www.postfix-jp.info/trans-2.3/jhtml/ADDRESS_REWRITING_README.html http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html#sender_canonical_classes マッピングファイルを作成します。 #vi /etc/postfix/sender_canonical sender_canonicalファイルに、付け替えるドメインのマッピングを記述します。旧ドメイン、新ドメインの順です。 <内容> @old.example.com @new.example.com 作成したあとは、ハッシュを生成します。 #postmap sender_canonical main.cfを設定します。 設定パラメータは3つのみです @sender_canonical_classes = envelope_sender, header_sender (デフォルト) Asender_canonical_maps = hash:/etc/postfix/sender_canonical Blocal_header_rewrite_clients = permit_mynetworks @はデフォルト値なので記述しなくても、動作に変化はありません。 Bは、デフォルト値permit_inet_interfacesを、permit_mynetworksへ変更してます。 こう設定することで、mynetworksに記述されたクライアントからのメール送信については、ドメイン付け替えの対象とします。 最後にリロードして反映させます。 #systemctl reload postfix Postfixサービスを再起動し、メール送信試験をしてみます。 送信者のメールアドレスは user1@old.example.com です ドメイン付け替え設定前 メールのFrom、Returnアドレスが、oldドメインで着信しています。 ドメイン付け替え設定後 メールのFrom、Returnアドレスが、newドメインに付け変わっています。 解説 ドメイン付け替え機能について Postfixでは、ドメインの付け替えは、メールアドレス書き換え機能の応用です。 (アドレス全体を書き換えるのではなく、ドメイン部分のみ書き換えているだけです) マッピングを記述すれば、メールのToアドレスやFromアドレスを自由に差し替えることも可能です。 細かい制御のパラメータもあります。 例えば ・送信者アドレス(From系)だけ書き換える。(sender_canonical_maps) ・受信者アドレス(To系)だけ書き換える。(recipient_canonical_maps) ・FromとToの両方を同じルールで書き換える(canonical_maps) ・エンベローブ部のアドレスだけ書き換える(sender_canonical_classes) などもパラメータで制御できます。 ただ、スパム検知に引っかかる恐れもありますし、あまりややこしいことは避けましょう。 パラメータは似た名前でそろえられているのでわかりやすいです。使用方法も同じです。 送信者アドレスを書き換えるパラメータ sender_canonical_classes sender_canonical_maps 受信者アドレスを書き換えるパラメータ recipient_canonical_classes recipient_canonical_maps 両方書き換える canonical_classes canonical_maps パラメータについては、Postfix本家でも解説されています。 http://www.postfix-jp.info/trans-2.3/jhtml/ADDRESS_REWRITING_README.html http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html#sender_canonical_classes 付け替え対象のメール指定 (デフォルト) local_header_rewrite_clients = permit_inet_interfaces ローカルホスト自身が生成したメールのみアドレス付け替えの対象とします。 (変更後) local_header_rewrite_clients = permit_mynetworks mynetworksから送信されてきたメールについて、アドレス付け替え このページでは「内部の送信メールサーバ」を想定しているので、普通はmynetworks値で信頼されたネットワークやアドレスが指定されているはずです。 もし貴方が(不特定多数からのメール着信を受け付けている)DMZに設置したSMTPサーバでドメイン書き換えを検討している場合は remote_header_rewrite_domain = static:all などの使用を検討する必要があるかもしれません。 しかし、セキュリティ的にも重要なサーバでややこしいことをするのはお勧めしません。 メール経路に専用SMTPサーバを挟み込むほうが、後々のトラブルを防げるでしょう。 送信者のsender_canonical_maps、受信者のrecipient_canonical_maps sender_canonical_mapsは、「送信者アドレス(From)を書き換え対象」とします。 メールのFromがチェックされ、マッピングテーブルで一致したら、処理が行われます。 アウトバウント(社内から社外へ送信)の場合、社内の送信者Fromアドレスが付け替えられます。 インバウンド(社外から社内への受信)の場合、社外の送信者Fromアドレスが付け替えられます。 recipient_canonical_mapsでは、「宛先アドレス(ToやCC)を書き換え対象」とします。 To/CCがチェックされ、マッピングテーブルで一致したら、アドレスが付け替えられます。 アウトバウンド(社内から社外へ送信)の場合、社外への宛先アドレスが付け替えられます。 インバウンド(社外から社内への受信)の場合、社内への宛先アドレスが付け替えられます。 特定ドメイン宛のメールだけ、ドメイン付け替えしたい 例えば新旧メールドメインが並行運用している状態で、以下のようにしたいとします。 ・外部(インターネット方面)へメールを送信する場合は従来のドメイン名を使用 ・グループ企業へ送信する場合は新ドメイン名を使用 Postfixの設定では「全てのメールについてドメイン名付け替えを実施する」ので、こういうニーズには対応できません。 一番手っ取り早く安全な対策は間に一台、変換専用のメールサーバを設置することでしょう。 どうしても1台のメールサーバで処理したい場合は、別項目で「特定ドメイン宛のメールだけドメイン付け替えをする」を解説しています。 |
|