タグ別アーカイブ: Courier

Courierが利用するaliases.datの中身を確認する

1. Courierのaliasシステム

現在、メールのMTAとしてcourierを利用している。courierさんはメールを配送する際、aliasというメールアドレスに別名を付ける仕組みを持っている。

この仕組みがあると仮想的にメールアドレスを増やせたりして結構便利だったり。もともとsendmailにあったものをそのまま引き継いでいるような。

で、このaliasを利用するにはちょっと一癖ある。

続きを読む Courierが利用するaliases.datの中身を確認する

FreeBSDからメールの配送がうまくいってなかった

1. メールがこない!

現在、いくつかのホストでは監視用にメールを飛ばすようにしてる。これってsmtpでメールサーバを立てて・・・、って訳ではなく、各ホストのsendmailがmailコマンドでメールを投げてくる、という簡単なものだ。

先日メールサーバを移行したのだけれど、このタイミングであるホストからのメールが来なくなった。送りたいメールはローカルのドメイン宛てで、送りたいプログラムはcactiのアラートメール。phpのmailコマンドを呼んでいると思われるのでシステムのmailコマンドを利用しているような気がしてる。

まずはDNSでの名前解決を当たった。というのも、移行された旧メールサーバこそがこのメールが送れなくなったホストであり、ついでにDNSの機能まで積んでいたものだから、そこのMXレコードあたりの参照が出来なくなったんだろう、っていう予測を。

でもMXレコードでローカルのドメインを引いてもちゃんと引けてる。こまったなぁ。

続きを読む FreeBSDからメールの配送がうまくいってなかった

時刻のズレが呼ぶサービスダウン

1. メールが見れない!

ある日突然、メールが見れなくなった。imapでcourier-mtaのサーバに接続してメールを取得しようとしたらエラーが出ていた。

OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
0000 CAPABILITY
CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION
0000 OK CAPABILITY completed
0001 LOGIN ******** ********
BYE Clock skew detected. Check the clock on the file server

エラーとしては “BYE Clock skew detected. Check the clock on the file server” と言うものらしい。どうやら時刻がズレているようだ。

続きを読む 時刻のズレが呼ぶサービスダウン

CourierでSpamAssassinを利用してスパム対策

1. やっぱり面倒スパムメール

現在、メールサーバを運用しているのだけれど、やっぱりスパムメールがいっぱいくる。来るだけで害はない、はずなんだけれど、見通しが悪くなる点とかあって、できれば自動的にスパムを省いたりしたい。

で、導入されたのがSpamAssassin。

スパムメール対策としては結構有名なものらしく、解説してくれてるページもそれなりにあってインストールもお手軽。

そして実際、すでに運用されている。

今回はメールサーバを移転するに当たって、再度SpamAssassinを入れる事になった。

続きを読む CourierでSpamAssassinを利用してスパム対策

spamassasinをonにするには

spamassasinをonにするには、.mailfilterに以下の文を加えてメールフォルダを作る

xfilter "/usr/local/bin/spamc"

if (/^X-Spam-Flag: *YES/)
{
to "$MAILDIR/.spam/"
}

なおスパムアサシンのインストールは

%sudo portinstall p5-Mail-SpamAssassin

%sudo emacs /etc/rc.conf
spamd_enable="YES"
%sudo /usr/local/etc/rc.d/sa-spamd start

となる。スパムアサシンは背後でspamdが動いており、スパムかどうかの判断をしてもらう仕組みらしい。

513 Relaying denied.

1. courierでメールのリレーが拒否された問題。

courier-mta宛てにメールを送信しようとしたらエラーが帰ってきてしまった。
試験をしていてこのエラーに当たったのだけれど、その環境はちょっと複雑だったりする。

まず、メールを受信したい、coueir-mtaなホストがある。 courier.l2tp.org (192.168.1.1) ってホストだ。
このホストへテストメール送信専用のホストが別にある。 test.example.org (192.168.2.1) ってホストだ。
このとき、テストメールを送ったら以下のようなエラーが帰ってきた。

まずは戻されたメール本文に

 xxx.xxx [xxx.xxx.xxx.xxx]:
 >>> RCPT TO:
 <<< 513 Relaying denied.

/var/log/maillogにはこんなエラーが。

Jun 25 08:50:06 ml115 courieresmtpd: error,relay=xxx.xxx.xxx.xxx,from=,to=: 513 Relaying denied.

2. 単純にコレを解決することもできたり

この、 “513 Relaying denied.”がエラーとして出るのには二つの原因がある。
その問題はメールの配送の仕組みに関わってて、ちょっとややこしい。

まず一つは、送られたメールがインターネット上のどこかのメールアドレス宛で、このメールをあなたのメールサーバを踏み台にして送らせてくださいね、っていうパターン。ぶっちゃけスパムとかこの方法で踏み台にしてくる。
もう一つは正常なパターン。この送っているメールはあなた宛てのメールですよ。だからあなたに送っています、受け取ってください、というメール

まず前提の考え方として、一般的には他のメールサーバへの転送は拒否するのが普通だ。コレを無条件に許可しているとスパムの踏み台になっちゃう。
そしてそれを決めているのは smtpaccess/default のファイルで決めてたりする。
( /usr/local/etc/courier/smtpaccess/default を変更。)
参考: makesmtpaccess, makesmtpaccess-msa | courier-mta.org

このファイルに転送を許可するホストを書いておけば良い。
仮にスパムではなく、信頼されたメールサーバからのメールを転送してあげたいときにはここにアドレスを列挙すれば良い。
そして編集が終わった場合には makesmtpaccess を実行して、smtpaccessディレクトリをもとに作成される、couerierが読み込むバイナリ形式のsmtpaccess.datを更新してやる。

また後者のケース、courier.l2tp.org が受け取るべきメールだった場合にちゃんと受け取るようにさせてあげたい。
このときにいじるのは esmtppercentrelay.dir/default のファイル。ここに受け止めるべきドメインを列挙しておけば良い。
そして編集が終わったらこちらもバイナリファイルを作成しておく。バイナリを作成するコマンドは makeacceptmailfor。さっきと違って編集するファイルと実行ファイルの名前がちょっと違うので注意。
参考: makeacceptmailfor | courier-mta.org

以上二つのケースにおいては、それぞれBDB形式のバイナリを作成した場合、courierの再起動は不要。

3. まとめ

513 Relaying denied.が出ちゃった場合には、courier側でアクセス制限してはじいてる。なのでそれに風穴を開けてやる必要がある。
その方法は二つ。ひとつはIPアドレスで無条件に通してやる。もう一つはesmtppercentrelay.dirへ記述してやる。そしてどちらの場合もmakeしてやることを忘れないこと。

courierのブラックリストに入れられてしまった場合の対処

1. Courierのブラックリスト

Courierにはブラックリスト機能が備わっている。存在しないメールアドレスに何度もメールを送ったり、ループしたり、maildropの設定をミスっていたりすると、当該メールアドレスへのメールをしばらくの間ブロックしてしまうらしい。
courierでメールの配送テスト中などに、User Unknownとかでメールの配送ミスが連発してしまい、コネクションを確立して宛先を伝えた瞬間にService unavailableとか言われてしまう。コネクションを確立して宛先を、というのは、手動でsmtpをやりとりした際、RCPT TOを入れた後に拒否されてしまう。

shell> grep 456 /var/log/maillog
Oct 27 15:39:20 mailhost courieresmtpd: error,relay=192.168.1.1,from=,to=: 456 Address temporarily unavailable.

ちなみに、この”Address temporarily unavailable.”というエラーメッセージに対するエラーコード、456なんだけれど、smtp over SSLのデフォルトポート番号465と混同してしまいそう。 続きを読む courierのブラックリストに入れられてしまった場合の対処