gmail に於ける spf と転送の問題解決

gmail に於ける spf と転送の問題解決

独自ドメインのメール管理に gmail を使用しています。まず独自ドメイン用のメールサーバーを立ち上げます。普通このメールサーバーに対しメールクライアントでアクセスしますが、私の場合 gmail のインタフェース、機能を使ってメール管理・運用をしたいので、メールサーバーからgmail にメールを転送して読み書き、保存をして、メールを出す時は gmail からメールサーバーを経由、リレーしています。
なんでこんなことをしているかと言うと、gmail の優れた UI 、迷惑メールフィルタなどを使いたいからです。
ここで問題となるのが、単に転送するだけでは gmail で spf エラーが出る事です。その為、最初は gmail にメールを持ってくるのに pop3 を使っていたんですが、gmail の pop3 って最長1時間に1回位の頻度でしかチェックしてくれません。私同様これを不便と思う人がいる様で chrome の拡張機能で

などがあり、1分間隔でメールチェックをしてくれます。
が、これは gmail サーバーに負荷を与えますし、イリーガルな感が拭えません。下手するとアカウント ban されるかもしれません(まぁ、大丈夫だと思うけど)。なので、転送しても spf エラーにならない方法を調べてみると

に大変参考になる記事が見つかりました。
ここに記述されている

  • 単純方式(SPFと転送の相性問題に対する解決案の2つの方式)
  • SRS(Sender Rewriting Scheme)

それぞれについて postfix での解決方法を記述しておく。
最初の解決方法は、Envelope from の書き換えで、postfix の main.cf に

sender_canonical_classes = envelope_sender
sender_canonical_maps = regexp:/usr/local/etc/postfix/sender_canonical

を加えて、sender_canonical に正規表現で

/@([a-zA-Z0-9_+\-\.]+)$/ @example.net

などと記述して転送サーバーが spf 対応しているドメインに書き換える事で問題を解決する。
但し、参照した記事にあるとおりエラーメールなどを本当の発信者に返すことが出来ない。

そこで2番目の登場となる。これは

を使用した技術で、上の単に spf の認証が通るドメインに書き換えるのではなく、spf の認証を通り尚且つ元の差出人の情報も保持したまま転送できる。postfix 用に

が開発されており私もこれを使用している。ソースを github からダウンロードして make して出来た postsrsd を /usr/local/sbin などに install(make install すると default でここに入る) して
postfix の main.cf に

sender_canonical_maps = tcp:localhost:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:localhost:10002
recipient_canonical_classes= envelope_recipient,header_recipient

を追加して、postsrsd を

postsrsd -D -u mailnull -p /var/run/postsrsd/postsrsd.pid -d mail.example.com -s /usr/local/etc/postsrsd.secret -f 10001 -r 10002 -t 1800

などとして起動。postfix も reload ないし再起動すれば

Oct 16 16:12:44 mail postsrsd[54963]: srs_forward: <[email protected]> rewritten as <[email protected]>

の様に example.com -> example.net に元の情報を維持しつつ且つ spf 認証を通るアドレスに変換される様になる。以上、ご参考になると幸いです。ではでは

コメント

タイトルとURLをコピーしました