Drive Network を利用しているお客様すべてのメールが メールゲートウェイ 構成図 Gateway3 から送信されるため、送信先によっては spam を受け取ったと解釈する場合もあり、Gateway3 の IP アドレスが SpamCop 等のデータベースに登録される場合があります。
送信先ネットワークでも前述の構成図 Gateway0 に相当する Incoming 用のメールサーバが存在しますが、これらが SpamCop 等のブラックリストデータベースを参照かつ Gateway3 の IP アドレスが登録された場合、その送信先に送信出来ない場合があります。
登録された IP アドレスが解除されない限り、clean なメールもすべて遮断されるため不定期にお問い合わせがあります。
Drive Network からは外部ネットワークポリシーを調整することは出来ないので、遮断された場合に如何に到達性を回復するかの対処療法で解決することとしました。
サーバに IP アドレスを複数登録
FreeBSD の場合は
ifconfig em0 inet 202.152.209.33 netmask 255.255.255.255 alias
ifconfig で追加出来ます。余裕を見て 5, 6 IP アドレス程は登録しました。
複数の IP アドレスを持つホスト名の .ssh/known_hosts への登録 を参考に、SSH 接続する場合の準備もしておくと良いでしょう。
A レコード登録
sendmail.cf で送信元 IP アドレスを指定しますが、サーバに alias で追加したのみでは、
Received: from mx.drive.ne.jp (mg10.drive.ne.jp [202.152.209.33] (may be forged)) by mg.drive.ne.jp with ESMTP id r33BUeqs098135 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256); Wed, 15 May 2013 20:30:40 +0900 (JST)
の様に正引き・逆引きが一致しない場合に記録される may be forged が Received フィールドに記録されます。
追加した IP アドレスを該当するホスト名の A レコードに追加しつつ、逆引きも正しく登録することで、
Received: from mx.drive.ne.jp (mg10.drive.ne.jp [202.152.209.33]) by mg.drive.ne.jp with ESMTP id r33BbQLu001991 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256); Wed, 15 May 2013 20:37:26 +0900 (JST)
上記の通り通常の表示で記録されます。
sendmail.cf 変更
sendmail.cf では
O ClientPortOptions=Family=inet, Address=202.152.209.33
の様に Address= に該当する IP アドレスを記述し、sendmail を restart することで、指定した IP アドレスから送信されます。
応用
以上の準備と仕組みを用いて SpamCop に登録された場合に、登録を検知 -> 送信元 IP アドレスの変更 -> sendmail.cf 反映, restart を自動化するプログラムを作成します。(続く)