前回の日付を見るとなんと丸々一年前ですね。お客様にはウェブサイトは定期的に更新しなければ効果がありませんと、偉そうに吹聴しているくせに話なりませんね。忙しくても毎日まめの更新されている方は大勢いらっしゃるので、それを理由には出来ませんけれども。
SPFがRFCになってから既に3年以上が経過しているので、そろそろ弊社のメールサーバーでもSPFのチェックを行うことにしました。
すでにDNS側では対応していた(txtレコードを追加するだけなので簡単です)ものの、チェックまでは行っていませんでした。
ちまみにSPFとはSender Policy Frameworkの略でして詳しくはこちらをご覧下さい。
qmail-sppのプラグイン一覧を見るとqmail-spp-spfなるものがありましたので、これを早速導入することにしました。qmail-sppの仕組みは非常に単純で、プラグインと言っても大抵は環境変数を読み込んで、標準出力に規定されているコマンドを出力するだけですので、何をやっているかはソースコードを読めば大体わかるので、安心してプラグインを追加出来ます。
qmail-spp-spfをコンパイルする前に予めlibspf2をインストールしておきます。libspf2をインストールするとspfquery等のコマンドも一緒にインストールされるので、perlで書かれた同名のコマンドを既にインストールしている人は、上書きされてしまう可能性があるので注意して下さい。コンパイルも例のおまじない(./configure; make install;)でさらっと入るはずですので、特にひっかかるところはないと思います。
どちらかというとqmail-spp-spfのコンパイルで引っかかってしまうかも知れません。ドキュメントの書かれているコンパイル用のコマンドでそのまま通る場合もあるでしょうが、大抵は自分のサーバー環境に合わせて適宜読み替える必要があります。例えば弊社サーバーだと以下のようになります。
gcc -Wall -I/usr/local/include/spf2 -o qmail-spp-spf qmail-spp-spf.c -L/usr/local/lib -lspf2 -lpthread
またコンパイルエラーの内容によってはソースコードの修正も必要になるかもしれませんが、ソースコード自体は比較的短いのでひとつひとつ潰していけばなんとかなると思いますので頑張ってください。首尾良くコンパイル出来たら、qmail-spp-spfを/var/qmail/plugins/以下にコピーして、/var/qmail/control/smtppluginsファイルに設定を追加して、qmail-smtpを再起動すれば動きます。
チェック結果によって挙動を変更するために環境変数がいくつかありますが、何も設定しなくてもReceived-Spfというヘッダーがメールに追加されるようになるので、そのままで運用してしばらく様子をみるのも良いかと思います。詳しくはドキュメントをご覧下さい。
ちなみに弊社サーバーでは結果がfailになったメールをリジェクトするように設定しました。どれくらい結果が出るか楽しみです。大事なお客様のメールまでリジェクトされそうでかなりスリリングですけど(笑)。
最近仕事でPostfixののコンテンツフィルタを書いていたので、テスト用にPostfix一式をセットアップしました。PostfixではどのようなIMAPサーバが使えるのかオフィシャルサイトのドキュメントを見ると、いくつかのソフトウェアが列記されていて、その中には弊社サーバで使用しているCourier-IMAPも入っていたのですが、今回は筆頭に書かれていたDovecotを使ってみました。
セットアップのためにDovecotのサイトにあるドキュメントに目を通してみると、Maildirはもちろんのこと、vpopmailにも標準で対応していることが分かり、試みに弊社のimapsをDovecotに切り替えてみることにしました。
現在使用中のCourier-IMAPは安定して動いているので積極的に置き換える理由はないのですが、まったく不満が無いわけでもないので(受信フォルダに数千件のメールが保存されていると、新しくメールが届いても表示されなかったり、imapsでつなぐと動作がなんとなく重かったり)、それらが改善されることを期待しての導入です。
インストール及び設定はここを参考にしました。daemontools用のスクリプトも置いてあるので、いくつか値を書き換えるだけで実行するところまでは辿り着けます。
尚、imapsやpopsを使う場合は事前に秘密鍵と証明書のペアキーが必要になります。dovecotではdoc/mkcert.shに鍵生成用のスクリプトが用意されているので、これを自分の環境用に書き換えて実行すれば簡単に瀬性出来ます。暗号化のためだけであれば自己署名で十分ですし。
とまあ、実行するまでは比較的順調だったのですが、肝心のユーザ認証が何度試しても成功しなくて悩みました。認証にはdovecot-authというデーモンプロセスが担当していて、実行ユーザにはvpopmailを割り当てていました。通常運用のvpopmailであればこれで問題無く動作するはずですが、vpopmailにはドメインごとにユーザを割り当てる機能があり、それを使ってドメインごとにユーザを分離していたため、vpoipmailユーザでは認証がうまく行きませんでした、この場合はrootで実行させるしか解決方法がないです。一つにドメインだけであれば、そのユーザを割り当てることも出来ます。
ちなみにdovecot.confにauth_debug = yesと書き込めば詳細なログが出力されますので、そのメッセージを基にdovecotとvpopmailのソースコードを行ったり来たりして原因を特定出来ました。他にもmail_debug等のパラメータがありますので、問題解決に役に立つかもしれません。
最近になってまた急激にSPAMが増加した、ホームページにバカ正直にメールアドレスを載せているせいで、前から一定の数の迷惑メールが届いていたのだけれども、ここ最近は一気に五倍くらいに増えて、さすがにちょっと対策をしないといけない状況になってきた。
弊社のMTAは相変わらずqmailなのでqmail-spp用のプラグインを書くことにしました。対策の肝はどう考えてもSMTPコネクションしかないので。
まずは練習がてら存在しないアドレスに対して送信してくるコネクションを落とすプラグインの作成。今まではメールアドレスを間違えて送ってくる人がいるかもと思って、バウンス専用のアカウントを作って、そこに転送していたのだけれども、いちいち確認出来ないほどゴミが増えたので、コネクションをばっさり落としてしまう事にします。最終的に配送に失敗するので送った人も気がつきますよね。たぶん。
実際に導入してみたら、いきなり迷惑メールが半分以下になった(笑)。毎日どんだけバウンスしててんという感じではありますね。
ちょっとしたことで効果抜群だったので、すっかり気をよくしてまして、今は一見さん方式を導入すべく鋭意開発中です。
qmail(というかdjbの作成したアプリケーションやライブラリ全て)がパブリックドメインになったそうです。いままでもオープンソースではあったものの、ライセンスが独自のものでバイナリのみならず、オリジナルソースに改変を加えたものも再配布出来なかったので、機能不足や不具合があった場合はパッチという形で提供されてきました。それが導入のための敷居を高くしていたように思います。
いまは標準的な存在としてnetqmailがあるので、インストールするときに混乱することはありませんが、今後はオリジナル+パッチではなく、パッチ済みのパッケージも登場してくるのではないかと思います。ただpostfixのように*BSDやLinuxのディストリビューションに取り込まれるかは、今までの経緯が経緯だけに微妙なところです。
qmailが登場した当時はsendmailの置き換えとしては唯一の選択肢と言ってよい状況で、単一ファイルによるメールの消失や、増加傾向に有ったスパムに悩まされていたのが、乗せかえた途端にすっきり解消出来て、同じマシンなのにソフトウェアによってこうも配信や受信性能に差が出るものかと感心した覚えが有ります。
今でも妙にバイアスのかかった意見がつきまとうqmailですが、弊社サーバではいまも現役ですし、特に目立った不具合も出ていません。さしたる数のメールを配信していないのも問題が顕在化していない理由かもしれませんが。
qmail-sppパッチのおかげで容易にプラグインを追加出来るようになったこともあって、よく言われるqmail-smtpdの接続情報不足なども特に問題ではなくなりました。ログやメールヘッダーに情報を追加出来るので夢が広がります(笑)。
弊社は京都にあるインターネット技術に特化した会社です。主にインターネット活用のためのコンサルティングやソフトウェアの導入、またオープンソースを使ったアプリケーションの開発等を行っています。
基本的にお話を伺うだけなら無料(ただし交通費はご負担頂きます)ですので、お気軽にご相談ください。