postfixにおける自動返信の設定
いわゆるvacationとか、空メール送ったら案内が返ってくるよとかの自動返信メールをpostfixに仕掛ける方法。
文字化けや携帯メールにも完璧に対応してそうな出来合いのアプリが見つからなかったので、phpでスクリプトを書いた。
postfixで特定のメールアドレスにメールを受信したら、phpをコマンドで起動するように設定する。
postfixでは、aliasに仕掛ける。自分の環境では/etc/aliasesに以下のように追加。
mailaddress: mailbox_name,"|/usr/local/bin/php /var/autoreply/autoreply.php"
mailaddress@example.com宛にきたメールを、mailbox_nameというユーザ(メールボックス)に配送すると同時に、/var/autoreplyディレクトリにあるautoreply.phpを起動。(パスやドメインはテキトウに読み替えてください。)
編集後、
$ /usr/local/postfix/sbin/postalias /etc/aliases
を実行するとpostfixに反映される。
newaliasesをrootユーザで実行してもいいのだが、postaliasの方はpostfixのユーザ権限で実行できるので便利。
以下、autoreply.phpのソース
<?php mb_internal_encoding("UTF-8"); //メール返信 設定 $returnpath = "mailaddress@example.com"; $from = "自動返信者"; $to = $_ENV['SENDER']; $subject = "自動返信メールのタイトル"; $body =<<<_EOF_ 自動返信メールの文面 _EOF_; $headers = "From: " . mb_encode_mimeheader($from, "UTF-8") . "<" . $returnpath . ">" . "\n"; $headers .= "MIME-Version: 1.0\n" . "Content-transfer-encoding: base64\n" . "Content-type: text/plain; charset=UTF-8\n"; mb_send_mail($to, $subject, $body, $headers, " -f " . $returnpath ); ?>
必ずUTF-8で保存すること。
携帯各キャリアもこれでOK。