Procmailを使用したメールフィルタリング ~第2回~
<h1>procmail について</h1>
<strong>
今回は前回の設定に引き続いて、
procmailで実際にフィルタリングの設定をして動作確認をしてきたいと思います。
</strong>
<h2>procmailの動作確認</h2>
<h3>例1)特定のユーザからメールが送られてきたら、異なるユーザにメールを転送する</h3>
rootユーザに戻り、テスト用の user02 を追加します。
[root@localhost ~]# useradd user02
rootユーザからメールを user01 に送信して、user02 に正常に転送されるかを確認してみます。
[root@localhost ~]# mail user01@localhost Subject: procmail test send mail user01 . Cc: [root@localhost ~]#
user01のメールスプールを確認してみるとメールが届いていないことがわかります。
[root@localhost ~]# cat /var/mail/user01 [root@localhost ~]#
user02のメールスプールを確認してみるとメールが届いていました。
[root@localhost ~]# cat /var/mail/user02 From user01@localhost.localdomain Tue Sep 29 17:06:28 2015 Return-Path: <user01@localhost.localdomain> X-Original-To: user02@localhost.localdomain Delivered-To: user02@localhost.localdomain Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with ESMTP id 473B476698 for <user02@localhost.localdomain>; Tue, 29 Sep 2015 17:06:28 +0900 (JST) Received: (from user01@localhost) by localhost.localdomain (8.13.8/8.13.8/Submit) id t8T86SjP022612 for user02@localhost; Tue, 29 Sep 2015 17:06:28 +0900 X-Original-To: user01@localhost.localdomain Delivered-To: user01@localhost.localdomain Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with ESMTP id 2225D76698 for <user01@localhost.localdomain>; Tue, 29 Sep 2015 17:06:28 +0900 (JST) Received: (from root@localhost) by localhost.localdomain (8.13.8/8.13.8/Submit) id t8T86SbM022605 for user01@localhost; Tue, 29 Sep 2015 17:06:28 +0900 Date: Tue, 29 Sep 2015 17:06:28 +0900 From: root <root@localhost.localdomain> Message-Id: <201509290806.t8T86SbM022605@localhost.localdomain> To: user01@localhost.localdomain Subject: procmail test send mail user02 [root@localhost ~]#
また以下のように user01 のホームディレクトリをみると、
procmail.log というファイルが作成されていて、user02に転送した旨のログが記録されていることが確認できます。
[root@localhost ~]# su - user01 [user01@localhost ~]$ ls procmail.log [user01@localhost ~]$ cat procmail.log From root@localhost.localdomain Tue Sep 29 17:06:28 2015 Subject: procmail test Folder: /usr/sbin/sendmail -oi user02@localhost 710
<h3>例2)件名に特定の文字が含まれていたら別のファイルに出力する</h3>
続いて、
今度はメールの件名に特定の文字が含まれていたら
メールを指定したファイルに保存するようにしてみます。
user01のホームディレクトリ内の .procmailrc を以下のように書き換えます。
[user01@localhost ~]$ vi .procmailrc LOGFILE=$HOME/procmail.log :0 * ^Subject:.*SPAM.* $HOME/spam_mail.txt
この状態で rootユーザから user01 に対してメールを送信して、
動作を確認してみます。
[root@localhost ~]# mail user01@localhost Subject: TEST test mail . Cc:
user01のメールスプールに正常にメールが届いていました。
[root@localhost ~]# cat /var/mail/user01 From root@localhost.localdomain Tue Sep 29 17:27:34 2015 Return-Path: <root@localhost.localdomain> X-Original-To: user01@localhost.localdomain Delivered-To: user01@localhost.localdomain Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with ESMTP id 341ED7664A for <user01@localhost.localdomain>; Tue, 29 Sep 2015 17:27:34 +0900 (JST) Received: (from root@localhost) by localhost.localdomain (8.13.8/8.13.8/Submit) id t8T8RYlN022688 for user01@localhost; Tue, 29 Sep 2015 17:27:34 +0900 Date: Tue, 29 Sep 2015 17:27:34 +0900 From: root <root@localhost.localdomain> Message-Id: <201509290827.t8T8RYlN022688@localhost.localdomain> To: user01@localhost.localdomain Subject: TEST test mail [root@localhost ~]#
続いて今度は件名に「SPAM」という文字列を含んで
メールをrootユーザから user01 に対して送信してみます。
[root@localhost ~]# mail user01@localhost Subject: SPAM desu. test mail . Cc: [root@localhost ~]#
user01のメールスプールを確認してみると、先ほどの件名が「TEST」というメールしか届いていません。
[root@localhost ~]# cat /var/mail/user01 From root@localhost.localdomain Tue Sep 29 17:27:34 2015 Return-Path: <root@localhost.localdomain> X-Original-To: user01@localhost.localdomain Delivered-To: user01@localhost.localdomain Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with ESMTP id 341ED7664A for <user01@localhost.localdomain>; Tue, 29 Sep 2015 17:27:34 +0900 (JST) Received: (from root@localhost) by localhost.localdomain (8.13.8/8.13.8/Submit) id t8T8RYlN022688 for user01@localhost; Tue, 29 Sep 2015 17:27:34 +0900 Date: Tue, 29 Sep 2015 17:27:34 +0900 From: root <root@localhost.localdomain> Message-Id: <201509290827.t8T8RYlN022688@localhost.localdomain> To: user01@localhost.localdomain Subject: TEST test mail [root@localhost ~]#
user01のホームディレクトリ配下に spam_mail.txt というファイルが作成されていて、
メールがここに保存されていることが確認できます。
[root@localhost ~]# cat /home/user01/spam_mail.txt From root@localhost.localdomain Tue Sep 29 17:28:04 2015 Return-Path: <root@localhost.localdomain> X-Original-To: user01@localhost.localdomain Delivered-To: user01@localhost.localdomain Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with ESMTP id 50A657664A for <user01@localhost.localdomain>; Tue, 29 Sep 2015 17:28:04 +0900 (JST) Received: (from root@localhost) by localhost.localdomain (8.13.8/8.13.8/Submit) id t8T8S404022697 for user01@localhost; Tue, 29 Sep 2015 17:28:04 +0900 Date: Tue, 29 Sep 2015 17:28:04 +0900 From: root <root@localhost.localdomain> Message-Id: <201509290828.t8T8S404022697@localhost.localdomain> To: user01@localhost.localdomain Subject: SPAM desu. test mail [root@localhost ~]#
user01の procmail.log にも以下のようにメールを転送した記録が残っていました。
[user01@localhost ~]$ cat procmail.log From root@localhost.localdomain Tue Sep 29 17:06:28 2015 Subject: procmail test Folder: /usr/sbin/sendmail -oi user02@localhost 710 From root@localhost.localdomain Tue Sep 29 17:27:34 2015 Subject: TEST Folder: /var/mail/user01 752 From root@localhost.localdomain Tue Sep 29 17:28:04 2015 Subject: SPAM desu. Folder: /home/user01/spam_mail.txt 758 [user01@localhost ~]$
以上、2回にわたってprocmailの動作を確認してきました。