procmailの代わりに(rpmを作成して)maildropをインストールする(RPM編)
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
procmailでメールボックスのパーミッションが660になってしまう対処について調べてみた でも指摘したように、procmailには、メンテナンスの問題を含めて継続利用には、
少々、考えざると得ない時期に来たか?と思いまして、maildropへ完全移行しようと思います。
今回は、maildrop をインストールしたいわけですが、これが、CentOS /Scientific Linux の通常のリポジトリには、パッケージがprocmailはありますが、maildropはありません 。
そうなると自力でmakeすることになります。ここでは、自前でrpmを作成して、rpmを使ってインストールしてみます。Debian /Ubuntu では、バイナリーパッケージがありますからaptで簡単にインストールすることができます。
maildrop とは、
Courier Mail Serverによって使用される
MDA (
M ail
D elivery
A gent) です。maildrop は、
MDA (
M ail
D elivery
A gent)の機能のほかに、フィルター機能を有しています。
maildropは、stdin(標準入力)からメールを受信し、Maildir、mboxのいずれの形式にも配信します。
maildropは、メンテナンスされていないprocmailのMDAに代わるものとして提案されています。
(Wikipedea 原文)
maildrop is a Mail delivery agent used by the Courier Mail Server. The maildrop MDA also includes filtering functionality. maildrop receives mail via stdin and delivers in both Maildir and mbox formats.
maildrop has been suggested as an alternative to the unmaintained procmail MDA.
MDA とは、
メール配送エージェント(M ail D elivery A gent、MDA)で、メールサーバの中で、
メール転送エージェント(MTA)によって振り分けられた電子メールを受信者に配送する機能のこと言います。
maildropの最新rpmを作成する
CentOS /Scientific Linux (Redhat系)用に 正式なrpmはありません。そのため、ここでは、最新のソースコード一式をダウンロードしrpmを自力で作成してみます。
と、いっても必要なライブラリさえ整っていれば、そんなに難しいことではありません。
では、早速、maildropの最新rpmを作成してみましょう。
maildropの最新ソースコード一式をダウンロードします。
$ wget "http://sourceforge.net/projects/courier/files/maildrop/2.6.0/maildrop-2.6.0.tar.bz2/download" - O maildrop- 2. 6. 0. tar. bz2
...
maildropのrpmを作成するのに必要なパッケージをインストールします。
gcc g++ make rpmbuild は、最低限必要なパッケージです。
加えて、maildropをmakeするのに必要なライブラリが、
gdbm-devel pcre-devel libidn-devel fam-devel が必要です。
$ yum - y install gcc gcc- c++ make rpm- build
...
$ yum - y install gdbm- devel pcre- devel libidn- devel fam- devel
...
rpmを作成します。
rpmの作成は、rpmbuildコマンド1発で作成できます。すごいですね。
$ rpmbuild - ta maildrop- 2. 6. 0. tar. bz2
...
書き込み完了: /root/rpmbuild/SRPMS/maildrop-2.6.0-1.src.rpm
書き込み完了: /root/rpmbuild/RPMS/i386/maildrop-2.6.0-1.i386.rpm
書き込み完了: /root/rpmbuild/RPMS/i386/maildrop-devel-2.6.0-1.i386.rpm
書き込み完了: /root/rpmbuild/RPMS/i386/maildrop-man-2.6.0-1.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.CBOYEj
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd maildrop-2.6.0
+ rm -rf /root/rpmbuild/BUILDROOT/maildrop-2.6.0-1.i386
+ exit 0
これだけです。
オプションで、-ta を指定していますが、これは、アーカイブファイルからRPMファイルとSRPMファイルをビルドすように指示しています。
インストールするだけのRPMだけで良い場合は、-tb を指定します。
これでエラーが出なければOKです。
作成されたRPMファイルがどこに作成されたかは、最後に出力されます。
上記の例では、以下のようになります。
/root/rpmbuild/SRPMS : ソースパッケージのディレクトリ
/root/rpmbuild/RPMS/i386/: 32bitバイナリパッケージのディレクトリ
この中でインストールに必要なものは、
/root/rpmbuild/RPMS/i386/maildrop-2.6.0-1.i386.rpm です。
maildropをインストールする
maildropをrpmからインストールします
rpmさえできれば、インストールは簡単ですね。
以下は、32bit版のmaildropをインストールした例です。
$ cd / root/ rpmbuild/ RPMS/ i386/
$ rpm - ivh maildrop- 2. 6. 0- 1. i386. rpm
...
rpmのインストールを終えたら、メールボックスの作成のために suid , sgid の権限を付与しておきます。
$ which maildrop
/usr/bin/maildrop
$ chmod ug+ s / usr/ bin/ maildrop
suid , sgid を設定していないと、メールボックスが作成されていない状態(要は初めてメールが着た)のとき、メールボックスが開けないというエラー(以下参照)が出力されます。
maildrop[2225]: Unable to open mailbox.
これでインストールまでOKです。
簡単だったですね。
簡単な動作確認をしておきます。
動作確認は、以下のようにして行うことができます。
$ echo TEST| maildrop - d hoge
これで、ユーザhogeへ”TEST”という情報がメールボックスへ配信されればOKです。
$ cat / var/ mail/ hoge
TEST
もし、動作がおかしいなと思ったら、オプションに
-V9 を指定してデバッグ情報を出力するようにしてみましょう。
$ echo TEST| maildrop - V9 - d hoge
maildrop: Changing to /home/hoge
Message start at 0 bytes, envelope sender=hoge
Tokenized eof
maildrop: Attempting .mailfilter
Tokenized cc
Tokenized string: "! hanako"
Tokenized ;
Tokenized ;
Tokenized eof
.mailfilter(1): Opening logfile /home/hoge/.maildrop.log
maildrop: Delivering to |/usr/sbin/sendmail -oi -f '' hanako
maildrop: Delivery complete.
maildrop: Delivering to /var/mail/hoge
maildrop: Flock()ing /var/mail/hoge.
maildrop: Appending to /var/mail/hoge.
maildrop: Delivery complete.
こんな感じで、細かい情報が出力されますので、どこでエラーが発生したかわかるようになります。
MTAにmaildropを組み込みます。
あとは、実際のメールを受信したときにmaildropで配信するようにMTAの設定を行います。
ここでは、MTA として Postfix と Sendmail について解説してみます。
実際にメール送信してmaildropの動作を確認してみます。
maildropには、いろんな機能がありますが、ここでは単純にmaildropが動作しているかの確認だけなので、
hoge宛のメールをhanakoさんへCCで転送してみます。
まず、hogeさんのmaildrop設定を、hogeさんのホームディレクトリに .mailfilter と名前で作成します。
その内容は、以下のように hanakoさんへメールのコピーだけです。
ローカルユーザの場合は、上記でOKです。外部ユーザ(メールアドレス)の場合は、しっかりメールアドレス記述する必要があります。以下は、その例です。
cc "! hanako@example.com"
また、ここで
.mailfilter のパーミッションを 600 に設定しておきます。パーミッションを設定しないとエラー (以下参照 ) となります。
maildrop: Cannot have world/group permissions on the filter file - for your own good.
以下のようにパーミッションを変更しておきます。また、追加で所有者も確実にhogeにしておきます。
$ chown hoge. ~ hoge/. mailfilter
$ chmod 600 ~ hoge/. mailfilter
編集を終えたら、hogeさん宛にメール送信してみましょう。
確認は、できれば外部サーバーからのメール送信して、動作を確認した方が良いですが、内部からmailコマンドでもmaildropだけの動作確認としてはOKでしょう。以下はその例です。
$ mail hoge
Subject: Test-maildrop
This is Test-maildrop.
.
EOT
このメールが、hoge,hanako それぞれのメールボックスに配信されればOKです。
今回は、ここまでです。どうですか?うまく転送できましたか?
最近では、メールクライアントの機能が豊富になってきたので、メールの振り分けやスパム対策としてのMDAの用途の限定的にはなってきましたね。
ただ、そうは言っても便利な点も多々ありますから、手放せない方には、procmailもそろそろ限界かとも思いますので、maildropへの切り替えをおすすめします。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
関連記事 :
コメントを投稿 :