[qmail][perl] qmail, perlで自動返信メール
移転しました。
qmailで自動返信メールを送信する必要があったので、その実装についてのメモを記載しておく。
qmail側の設定
- qmailディレクトリは以下とする
- /var/qmail/
aliasの設定を変更して対応する。
/var/qmail/alias の下に.qmail-fugaのようなファイルを作成する。
するとfuga@example.com にメール送信するとこのファイルが実行されるようになる。
権限はalias.qmailに変えておく。
# vi /var/qmail/alias/.qmail-fuga ----- | /home/fuga/script/automail.pl ← メール内容をパイプでつなぎ標準入力として処理 &tensousaki@2example.com ← メール転送先 ----- # chown alias.qmail /var/qmail/alias/.qmail-fuga
メール受信プログラム
主な部分を抜粋。
標準入力を受け取り、MIME::Parserで解析してメール送信。
&main; sub main { my $lv_org_mail = ""; my $replyto = ""; my $from = ""; while(<STDIN>) { $lv_org_mail .= $_; } my $parser = new MIME::Parser; my $entity = $parser->parse_data($lv_org_mail); my $header = $entity->head; my $addr = $entity->head->get('from'); $addr =~ s/.*<(.*?)>.*/$1/g; # <>の中身がある場合にメアドを取り出す my $body = " ボディーです ---- $lv_org_mail ---- "; &send_reply_mail($addr, $body); } sub send_reply_mail { my ($addr, $body) = @_; // メール送信の処理を記載する : : }