procmailでメールの自動返信

procmailを使って、あるユーザー宛にきたメールを自動で送り主に返信します。
複雑な処理をして返したい場合はこちらのperlで自動返信を使ったほうがいいかと思います。(Perlの方のが全然いいかも)

まず、自動返信したいメールアカウントのユーザーのホームディレクトリに、procmailに渡すように転送設定をします。
sendmail、postfixの場合、.forward
qmailの場合 .qmail
というファイルをホームディレクトリに作成します。パーミッションは600で。
中身は以下の通り

.forward


| /usr/bin/procmail
 

エイリアスなどで実際に登録されていないユーザーなどの場合はaliasesファイルを編集して以下のように procmailにオプションをつけます。

/etc/aliases


kazan: "| /usr/bin/procmail -m /var/spool/procmail/.procmailrc_kazan"
 

qmailの場合
以下のようにしておけば、vpopmailでバーチャル設定している場合でも使えます。

.qmail


| preline /usr/bin/procmail -m ./.procmailrc
 

次にprocmailの設定。
procmailはホームディレクトリの .procmailrc というファイルを読み出すので、それに設定をしていきます。

.procmailrc


PATH=/usr/bin:/bin:/usr/local/bin
HOME=/home/kazan
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/mail.log
LOCKFILE=$MAILDIR/lock
MSGFILE=$MAILDIR/msg.txt
SUBJECT=$MAILDIR/subject.txt

FROM=`formail -rt -z -xTo:` #送信者アドレスの取得
SUBJECT=`cat $SUBJECT`
MSG=`cat $MSGFILE | sed s/[[:space:]]//g`
MSG=${MSG}${FROM}

:0
|(formail -r -A "Precedence: junk" \ #ヘッダの作成
-I "To: $FROM" \
-I "From: check@landmark-plaza.com" \
-I "Subject: $SUBJECT" \
-I "Return-Path: $FROM" \
-A "X-Loop: check@landmark-plaza.com" ; \
echo -e $MSG \
) | /usr/sbin/sendmail -i $FROM
 


上記の例では、外部ファイルに、メッセージ、タイトルを記述して、それを読み込んでいます。
このとき、文字コードをメッセージはJIS、タイトルはSJISにしておきます。

procmailの書き方はレシピと言って、書式があります。
レシピの紹介は省きますが、ググるとたくさん出てきます。

自動返信はformailというコマンドで行っています。
fomailのオプションは、こちら