CentOS 4.4
sendmail-8.13.x
を使用しています。
さて、
http://tejimaya.org/openpne/docs/2_2/OpenPNE_Setup.html
の
3-2. メールサーバの設定
をおこなって、携帯から画像の投稿などをできるようにしたいです。
こちらで行った作業が、
/etc/mail/virtusertable
に
@example.com sns
として、
/etc/aliases
に
sns: "|/usr/bin/php /home/hoge/bin/mail.php"
としました。
一応、これで動くのですが、
作成していないメールアドレスも
すべてこちらに飛んでしまいます。
なので、virtusertableやaliasesで正規表現をかけて、
pXXX-YYYやtXXX-YYYやbXXX-YYY
のみをプログラムに受け渡しするようにしたいです。
※マニュアルにあるように、XXX は数字。YYY は12バイトの英数字です。
procmailを使用せず、sendmailの機能で正規表現で処理させる方法をご教授ください。
sendmail では virtusertable, aliases はともに Berkeley DB 形式の
データベースファイル virtusertabel.db, aliases.db に変換されて参照
する実装となっている為、正規表現を使うのは無理だと思います。
一方、PHP スクリプト /home/hoge/bin/mail.php でアドレスをチェック
するようにすれば、正規表現での判別が可能かと。
(メールのヘッダー=ファイル先頭から最初の空白行までの部分を読み取り、
To: や Cc: で始まる行をチェックする)
ただし、宛先アドレス pXXX-YYY@example.com がヘッダーの To: や Cc: に
含まれないメール(Bcc や MLなど) の処理はちょっと難しいかも知れません。
以下の例ように procmail で X-Envelope-To: ヘッダーを追加する処理を挟めばOKですが。
なるほど、ありがとうございます。