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。