印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux 独自ドメインから envelope-from を使ってメールを送信する

hi-ho はメールを送受信する場合の規制が厳しい。自宅サーバの独自ドメインからメールを出せるように Postfix の設定を行う。ただし,メールヘッダには hi-ho のメールアドレスが埋め込まれる。

■ ■ ■

昨年から,自宅サーバのインターネット回線に hi-ho を使っている (nlog(n): 自宅 ADSL のプロバイダ乗り換え手続き (Nexyz.BB → hi-ho))。hi-ho は,今まで使ったプロバイダの中でメール送受信をする際の規制が厳しい。メールを送信する場合に設定が必要なのは次の3点である。

  • サブミッションポートを指定すること
  • SMTP 認証をすること
  • envelope-from と SMTP 認証の ID を一致させること

どれも hi-ho ドメイン内から迷惑メールを発信させないようにするのが目的である。サブミッションポートは,OP25B (Outbound Port 25 Blocking) という対策の一環で設けられているポートのことで,最近では一般的なものになっている。So-net や Nexyz.BB でも行われていたので,サーバに設定を行った (nlog(n): 自宅サーバで Outbound Port 25 Blocking 対策nlog(n): 自宅サーバからプロバイダのサブミッションポートを使ってメールを送信する)。SMTP 認証も一般的だろう。

これに加えて,hi-ho では envelope-from と SMTP 認証の ID を一致させることが必須となっている (差出元アドレスをhi-hoメール以外のアドレスで利用したい|全般|メールサービスについて|メールサービス|Q&A|会員サポートhi-ho)。基本的に,メールシステムにおいてはメールアドレスに何を書いてもよいのだが,それだと誰から発信されたのかがすぐには分からない。配信時刻追えばサーバのログから誰から発信されたのかが分かるが手間がかかる。そこで,hi-ho では envelope-from を必須にしている。envelope は封筒の意味であるから,例えて言うなら,手紙の中には「From 誰々」が書いてあるがこれは無視して,手紙を封筒に入れ,封筒には差出人は正しい hi-ho のメールアドレスを書く必要があるということである。

問題は,envelope-from はメールのヘッダに残るので,送った相手がヘッダをよく見れば,プロバイダに hi-ho を使っていて,そのメールアドレスが何なのかも分かってしまうということである。仕方のないことではあるが,嫌な人には嫌だろうし,私も嫌である。

以下では,嫌かどうかは別の議論として,自宅サーバから hi-ho のメールサーバを経由してメールを外部に出せるように,自宅サーバの設定を行う。

動作環境

動作環境は,Vine Linux 6.3, Postfix 2.8.10, インターネットサービスプロバイダ hi-ho である。

サブミッションポートと SMTP 認証の設定

メール送信のサブミッションポートと SMTP 認証の設定は,以前と同様である (nlog(n): 自宅サーバからプロバイダのサブミッションポートを使ってメールを送信する)。hi-ho の SMTP サーバは smtp.hi-ho.ne.jp で,ポート番号は 587 だから (メールサーバーは何を設定すればいいですか?|全般|メールサービスについて|メールサービス|Q&A|会員サポートhi-ho),/etc/postfix/main.cf には次のように書いておく。

relayhost = [smtp.hi-ho.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous

/etc/postfix/authinfo には,認証に必要なアカウント名とパスワードを設定しておき (username と password は自分のものを入力),

[smtp.hi-ho.ne.jp]:587  username@sky.hi-ho.ne.jp:password

書き込んだらデータベースを作っておく。

# postmap hash:/etc/postfix/authinfo

これで完了である。

envelope-from の設定

Postfix で envelope-from を設定するということは,envelope_sender を書き換えるということ意味する。/etc/postfix/main.cf には次のように書いておく。

canonical_classes = envelope_sender
canonical_maps = regexp:/etc/postfix/canonical.regexp

canonical_classes はヘッダのどの部分を書き換えるかの指定で,複数のクラスを書くことができる。ここでは envelope_sender のみを指定している。書き換えのルールは /etc/postfix/canonical.regexp に正規表現を使って設定してあることを記述している。

/etc/postfix/canonical.regexp の内容は次の通り (username は自分のものを使う)。

/^.*$/  username@sky.hi-ho.ne.jp

行頭から行末までのひと続きの文字列を username@sky.hi-ho.ne.jp に書き換えるという意味である。ファイルを保存したらデータベースを作成する。

# postmap /etc/postfix/canonical.regexp

この時,canonical.regexp には regexp: をつけない。これで完了である。

動作確認

ブログデータベースのバックアップを mysqldump2email を使って Gmail に送ったときのヘッダは次の通りである。発信は n@nlogn.ath.cx,宛先は username@gmail.com であるが,ヘッダに username@sky.hi-ho.ne.jp が残っている。

Delivered-To: username@gmail.com
Received: by 10.79.21.133 with SMTP id 127csp1225011ivv;
        Mon, 29 Feb 2016 09:35:12 -0800 (PST)
X-Received: by 10.107.38.82 with SMTP id m79mr20051008iom.2.1456767312261;
        Mon, 29 Feb 2016 09:35:12 -0800 (PST)
Return-Path: <username@sky.hi-ho.ne.jp>
Received: from mo-sw.mose-mail.jp (mo-sw1506-0.mose-mail.jp. [210.130.202.9])
        by mx.google.com with ESMTPS id d7si19127359igo.56.2016.02.29.09.34.43
        for <username@gmail.com>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Mon, 29 Feb 2016 09:35:11 -0800 (PST)
Received-SPF: pass (google.com: domain of username@sky.hi-ho.ne.jp designates 210.130.202.9 as permitted sender) client-ip=210.130.202.9;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of username@sky.hi-ho.ne.jp designates 210.130.202.9 as permitted sender) smtp.mailfrom=username@sky.hi-ho.ne.jp
Received: by mo-sw.mose-mail.jp (mose-mo-sw1506) id u1THYgeP010826; Tue, 1 Mar 2016 02:34:42 +0900
Received: from mail.nlogn.ath.cx (localhost [127.0.0.1])
        by mbox.mose-mail.jp (mose-mbox1505) id u1THXlDU029916
        for <username@gmail.com>; Tue, 1 Mar 2016 02:33:47 +0900
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
        by mail.nlogn.ath.cx (Postfix) with ESMTP id 0B55C405AF
        for <username@gmail.com>; Tue,  1 Mar 2016 02:30:12 +0900 (JST)
Content-Transfer-Encoding: binary
Content-Type: multipart/mixed; boundary="_----------=_1456767011116540"
MIME-Version: 1.0
X-Mailer: MIME::Lite 3.030 (F2.78; T2.09; A2.07; B3.08; Q3.08)
Date: Tue, 01 Mar 2016 02:30:02 +0900
From: mysqldump2email <n@nlogn.ath.cx>
To: username@gmail.com

メールのヘッダは,サーバを経由する度にメールの前に前にと追加されるので,時系列的には下から上に向かって読んでいくことになる。メールが発信された後,自宅の Postfix である mail.nlogn.ath.cx が受け取って,mbox.mose-mail.jp に送り認証してエンベロープを確認した後,mx.google.com に送っている。

3月1日の 2:30 に発信したメールが2月29日の 9:35 に届いているのは,標準時が JST から PST になっているからである。

Posted by n at 2016-03-13 22:01 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?