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のオプションは、
こちら