メール自動返信機能の導入(procmail) |
ここでは、procmailというソフトを利用して、メールの件名が、設定条件にマッチした場合のみ自動返信させる方法を紹介します。
設定はファイルにメールの配送条件を(レシピ)記述するだけです。
また、題名や差出人ごとに振り分けて転送したり、SPAM(迷惑)メールの削除等も行う事ができます。
# rpm -qa|grep procmail ← procmailがインストール済みかチェック procmail-3.22-0vl3 無い場合はapt-getでインストールすれば良いと思います。 # which procmail ← procmailの場所を調べる /usr/bin/procmail |
procmailの設定 |
※ ここからは自動返信したいユーザーで作業します。 ここでは、例としてユーザーyosiとします。 # su - yosi ← yosiになる 動作を有効にする設定 ユーザーのホームディレクトリに「.forward」というファイルを置きます。 $ vi .forward ← .forwardファイルを作成 i キー(入力モード) "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #ユーザー名" ← procmailの場所とユーザー名を指定 記載したら Esc キー(コマンドモード) :wq で保存 次にホームディレクトリに「.procmailrc」というファイルを作り、目的別に以下のレシピを記述してください。 2つ以上のレシピを書くことも可能。 $ vi .procmailrc ← .procmailrcファイルを作成 i キー(入力モード) MAILDIR=$HOME/Maildir ← メールディレクトリのパス DEFAULT=$MAILDIR/ ← 配送条件(レシピ)にマッチしなかった場合の配送先 LOGFILE=$HOME/procmail.log ← ログの場所 LOCKFILE=$HOME/.lockfile ← ロックファイルの場所 # ↓これをレシピと言います。 :0 * ^Subject:.*iso-2022-jp * ^Subject:.*\/.* * ? echo "$MATCH" | nkf -me | egrep 'メールの件名' ← この件名にマッチしたメールのみ自動返信 | (/usr/bin/formail -r -A"Precedence: ユーザー名" \ -A"From:ユーザー名 <ユーザー名@xxxxx.com>" ;\ ← ユーザー名と、ユーザーメールアドレス cat /home/ユーザー名/hensin.txt) |\ ← 自動返信のメール本文用のテキストの場所 /usr/sbin/sendmail -t 記載したら Esc キー(コマンドモード):wq で保存 |
レシピ再設定の際の注意点 |
Yosiの場合、どう言う訳か、.procmailrcファイルを再編集したら、自動返信が突然できなくなりました。 色々調べた結果、文字コードがEUC-JPで、保存できていなかったのが原因でした。 レシピを書き直す際に、日本語部分が文字化けしているようならば、文字コードがSHIFT-JISに なっている可能性があります。 その場合、viの設定が必要になります。 再設定の際、下記コマンド(コマンドモード)で現在の文字コードを調べます :set fileencoding fileencoding=sjis ← もしこのようになっていればSHIFT-JISと言う事です。 SHIFT-JISの場合、そのまま編集して日本語に直すとメール返信がうまく行えなくなります。 viの設定 $ vi ~/.vimrc ←ホームディレクトリに、.vimrc というファイルを作成 i キー(入力モード) set encoding=japan set fileencodings=euc-jp,iso-2022-jp,utf-8,shift-jis,cp932 set fileencoding=euc-jp 編集したら Esc キー(コマンドモード):wqで保存 これで、文字コードを自動認識するようになり、最初にファイルを作成した場合 euc-jp で保存するようになります。 |
自動返信用メール本文のテキスト作成 |
Windwsマシンの、メモ帳等で自動返信する際の文章を記載して「hensin.txt」というファイル名で保存します。
なぜ、Windwsマシンで記載するかと言うと、文字コードがSHFT-JISなので、メール本文が文字化けしないのと、
簡単にメール本文を変更しやすいからです。
※ hensin.texの名前は任意で結構です。(メモ帳の場合hensinで保存すると自動的にhensin.txtになると思います。)
次に保存したファイルをFTPで先ほどレシピで指定したユーザーの、ホームディレクトリへアップします。
自動返信のテスト |
自動返信を設定したユーザー宛に、先ほどレシピで指定した件名でメールを、送信します。
即、ユーザーから件名が、「Re:件名」で本文が、先ほど作成した返信用メール本文が記載されていれば、
うまく自動返信ができています。
自動返信の解除方法 |
メール自動返信設定を解除するには、.forwardファイルを削除すればOKです。
$ rm -f .forward ← forwardファイルを削除 |
その他に便利なレシピの書き方の紹介 |
自動返信だけでなく、そのメールを受信したい場合 :0c ← 先ほどと似てますがメール受信する場合はここに「c」を付けます。 * ^Subject:.*iso-2022-jp * ^Subject:.*\/.* * ? echo "$MATCH" | nkf -me | egrep 'メールの件名' | (/usr/bin/formail -r -A"Precedence: ユーザー名" \ -A"From:ユーザー名 <ユーザー名@xxxxx.com>" ;\ cat /home/ユーザー名/hensin.txt) |\ /usr/sbin/sendmail -t $HOME/Maildir ← 追記 メール受信してから、時間をずらして送信するには sleepコマンドで一定時間経過後にformailコマンドへパイプします。 この部分に追記(この場合10分後と言う意味です) ↓ | (sleep 10m ; /usr/bin/formail -r -A"Precedence: ユーザー名" \ 例) sleep 1s (1秒 sleep) sleep 2m (2分 sleep) sleep 3h (3時間 sleep) sleep 4d (4日 sleep) |
Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.