2017年12月01日

WindowsでSMTP中継サーバーを立てる

メールの送信には、プロバイダやGmail、Outlook.comなどのフリーメールサービスがインターネット上に公開しているSMTPサーバーを使うのが一般的であるが、古い機器やソフトのメール送信機能では暗号化設定(SSL/TLS)に対応していなかったり、送信元メールアドレス(From)が設定できないなどの理由で、一般的なSMTPサーバーが使えないことがある(いわゆる差出人偽装ができないように、アカウントのメールアドレスとFromが一致したメールでないと送信できないSMTPサーバーが世の中には存在する)。そこで、SMTPサーバーとの間にSMTP中継(リレー)サーバーを立てて、古い機器やソフトからはその中継サーバーを利用する。

SMTP中継サーバーを立てるにあたり、LinuxならPostfix使えば良いし、Windows ServerならIISに付属するSMTPサーバーを使えば良い。しかし、ServerではないWindows 7や10のIISにはSMTPが付いていないので、Mercury/32というソフトを使う。
ここでは、Mercury/32のセットアップ方法を順を追って説明する。

Pegasus Mailの公式サイトのダウンロードページで “Mercury/32 Mail Transport System for Win32 and NetWare Systems v4.80” と書いてある左横のDownloadボタンを押して、“m32-480.exe” というファイル名のインストーラーを入手する(2017年11月現在の最新版)。

以下、インストーラー実行後の各画面ごとの手順。
Mercury/32 Setup:「New installation」
 ↓
NetWare or Standalone?:「No NetWare Support」
 ↓
Where would you like to install it?:インストール先の設定。C:\Program Files (x86)\MERCURY とかに変えてもいい。良ければ「OK, accept this directory」
 ↓
Integration with Pegasus Mail:「No Pegasus Mail integration」
 ↓
Location for mailbox directories:「OK, accept this directory」
 ↓
Protocol modules:MercurySにチェックが入っている状態で「OK, continue installation」
 ↓
Select an SMTP client module:SMTP中継サーバーとして使用したいので「Install MercuryC」
 ↓
Basic configuration:特に入力せずに「OK, continue installation」
 ↓
Select an SMTP relaying mode:今回はローカルドメイン・ユーザーを設定しないので「Normal」「Strict」どちらを選んでも同じ(後で許可IPアドレスの設定が必要)。許可IPアドレスを設定せずにLAN内の全てのPCからSMTP中継サーバーを使えるようにしたいなら「None」を選ぶのだが、LAN内のPCがウイルスなどに乗っ取られた場合に、迷惑メール送信の踏み台にされる恐れがある。迷ったら、最もセキュリティレベルが高い「Strict」を選択。
 ↓
Mail queue location:「OK, continue installation」
 ↓
Ready to install Mercury/32...:「Install Mercury/32」
 ↓
Mercury Service Definition:Mercuryをサービスとして動作させたい場合は有料で可能だという案内だが、今回は利用しないため「Continue」
 ↓
Third-party Mercury Add-ins:「Done」
 ↓
Installation complete.:「Exit」

Mercuryを起動すると、以下のようなWindowsファイアウォールの警告メッセージが出てくるので「アクセスを許可する」。もし一度もこの警告メッセージが出てこない場合は、自分で入れているウイルス対策ソフトがファイアウォール機能を持っている可能性がある。いずれにしても、ファイアウォールの設定でMercuryを許可したいプログラムとして登録すればよい。
Firewall.png


MercuryをSMTP中継サーバーとして使うのに、最低限設定が必要な箇所は2箇所。
まず1箇所目は、「Configuration」メニュー →「MercuryS SMTP Server」→「Connection control」タブ。
インストール時にSelect an SMTP relaying mode画面で「Normal」か「Strict」を選択した場合は「Do not permit SMTP relaying of non-local mail」という項目にチェックが入っており、この場合「Add restriction」ボタンを押して、SMTP中継サーバーの使用を許可するIPアドレスを追加しなければならない。
許可するIPアドレスはfromとtoで範囲を指定できるが、単一のIPアドレスの場合はfrom欄のみ記入すればよい。
「Allow connections」と「Connections from this address range may relay mail through this server」にチェックを入れてOKボタンを押せば追加完了。
MercuryS.png


設定2箇所目は、「Configuration」メニュー →「MercuryC SMTP Client」。
一般的なメーラーの設定と同様に、実際にメール送信に使うSMTPサーバーを指定する。下の画像の設定例はGmailの場合だが、GmailのSMTPサーバーはOutlook.comなどには無い罠があり、「Announce myself as:」欄にもSMTPサーバーのドメイン名を記入しないといけない。さもなくば “Connection error during handshake with smtp.gmail.com.” というエラーが接続時に出ることになる。罠はそれだけではなく、Googleアカウントの設定で安全性の低いアプリを許可していない場合もはじかれる。
MercuryC.png


Mercury側の設定が済んだら、SMTP中継サーバーを利用する機器側の設定をする。
バッファローのNASで設定をした例は、下の画像のとおり。
Mercuryが稼動しているPCのIPアドレスを192.168.0.2とすると、初期設定ではその25番ポートが利用できるようになっている。
TeraStationMail.png

NASからテストメールを送信してみると、Mercuryのウィンドウにいろいろとログが表示され、しばらくすると外部のSMTPサーバーに向けてメールが送信される。
Mercuryのウィンドウに変化が無い場合はファイアウォールで通信がブロックされている可能性が高い。

ここまでの手順で実際にメールが届けば、セットアップは完了。

------------------------------------------------------------

だが、アカウントのメールアドレスとFromが一致したメールでないと送信できないSMTPサーバーを利用する場合、“Client does not have permissions to send as this sender” のようなログが残り、SMTP中継に失敗してしまう。
手元にあるバッファローの古いNASのメール通知機能では、FromがToと同じになるという仕様のため、アカウントのメールアドレス以外に通知を送信するには、SMTP中継の時にどうにかする必要がある。
「MercuryC SMTP Client」の設定の中に「Forced SMTP sender:」という設定欄があるが、これは中継時にFromを変更してくれるわけではなく、メールヘッダーのReturn-Pathフィールドを変更するだけなので効果がない。
なので、NASからアカウントのメールアドレス宛に送信されたメールを、本当に送信したいメールアドレス宛に転送、そしてアカウントのメールアドレスへの送信は中止、というように設定することで対処する。
Mercuryの「Configuration」メニュー →「Filtering rules」→「Edit global rules...」でその設定ができる。
「Headers...」ボタンを押して、下図のように2つの設定を順に追加する。
MercuryFiltering.png

ちなみにメニューには「Edit global rules...」の下に「Edit outgoing rules...」というのもあるが、outgoing rulesに同様の設定を追加すると、Forwardしたメッセージに対してもフィルタが適用され、無限にメールが転送され続けることになるため、注意が必要。

------------------------------------------------------------

Mercuryを継続してSMTP中継サーバーとして稼動させるには、ウィンドウを開いたままにしておくか、最小化して通知領域に入れる。リンク先を "C:\MERCURY\mercury.exe" -M のようにMオプションを付けて起動するようにしたショートカットをスタートアップに入れておけば、Windowsのログオン時に最小化した状態でMercuryを起動できる。有償のライセンスを買えばサービスとしても稼動させられるので、本格的な利用ならお金を払おう(商用利用の場合は購入必須)。
posted by 十河大瑛 at 2017年12月01日 00:03 | Comment(2) | パソコン関係
この記事へのコメント
突然失礼いたします。一言御礼を。

この中継の記事のおかげで、古いMacintoshからのメール送信が出来るようになりました。

20年ほど前の機種で、メールソフトもその頃のもの。当然最近のセキュリティ関係の設定は出来ず、ふるーーーいパソコンからメールでブログを更新、なんてのは夢のまた夢かと諦めかけていました。

でも本記事のおかげで出来るようになりました。記事に従い、サーバーはWindowsのノートに仮で立ててみました。全く問題ありません。素晴らしいです。

なんならメールでツイッターも出来るんじゃないか?などと自己満足の夢が広がります(ツイッターやらなんやら何もやってませんが)。

ほんとに大々々々々感謝です。

ありがとうございますm(_ _)m
Posted by ronson at 2019年03月17日 18:01
コメントありがとうございます。Windows向けに書いた記事が、まさかMac使いの方の役に立つとは思いませんでした。
当方も前世紀のWindows NT4のPCを生かしているので、古いPCで限界に挑みたくなる気持ちはよく分かります。
最近はSSLなどの問題もあり、なかなか厳しいですが、壊れるまで頑張れるといいですね。
Posted by 十河大瑛 at 2019年03月26日 20:03
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。