Tips

Procmailを使用したメールフィルタリング ~第2回~
2015.11.14

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の動作を確認してきました。

 

Linux認定資格 LPICを取るなら・・

Linux資格 「LPIC Lv1」徹底解説 連載目次

Recent News

Recent Tips

Tag Search