postmail.cgiをSMTP対応にカスタマイズ

記事
IT・テクノロジー
お名前SDサーバーにてpostmail.cgiを使っている運用歴の長いサイトがありました。

そのサイトをお名前RSサーバーに移設した際に、メールが届かないという問題が発生しました。

届かない宛先はyahooメールでした。

yahooメールは迷惑メール判定が厳しいのですが、SMTP送信すれば解決するはずでした。

SMTPでメール送信したい


しかし、postmail.cgiはSMTP送信に対応していません。

SMTP送信に対応しているperlスクリプトとしてメールフォームプロがあります。

しかし、メールフォームに乗り換えるにあたり、フォームが使われている箇所が多く、各フォームの内容も異なるため、変更量が多くなってしまう問題がありました。

そこで、すべてのフォームで共通に使われているpostmail.cgiをSMTP対応にカスタマイズすることにし、フォーム部分の変更が発生しないようにします。

perlスクリプトをSMTP送信対応にカスタマイズ


sendmailを使っているスクリプトをSMTP対応にするのは難易度が高いように思えますが、実はそんなことはありません。

postmail.cgiはperlで書かれています。

perlにはSMTP送信できるモジュール(Net::SMTPモジュール)が用意されているので、それを使ってメール送信関数を置き換えれば完成です。

sendmailでは自動でMessage-IDが付与されますが、Net::SMTPモジュールではMessage-IDが付与されないので、そこは別途対応が必要となりました。

Yahooメールにもメールが届くようになりました


SMTP送信に変更した結果、yahooメールにもメールが届くようになりました。

perl CGIのフォームであれば、Net::SMTPモジュールを使ってSMTP対応に変更することは比較的簡単に対応できることがわかりました。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す