備忘録

備忘録

正規表現でメールを転送(または、ローカルに保存)する

2017/04/05追記

コレもオススメ
https://github.com/mozilla/restmail.net

Ⅰ. はじめに

・hoge000@foo.com〜hoge999@foo.com宛にくるメールを全てadmin@bar.comに転送する。(またはファイルに保存)
・使い捨てメールサービスのMailinatorやMaildropのようなものを自分で作りたい。
正規表現でメールを振り分けたい
といった場合に使えます。

Ⅱ. やり方

1. 用意するもの

Linux(この記事の説明はCentOS 6.6 64bitを想定しています)
ドメイン1つ

2. サーバのセットアップ手順

1) postfixのインストール

yum -y install postfix

2) postfixのコンフィグを変更する

vim /etc/postfix/main.cf

以下のように変更

alias_maps = hash:/etc/aliases,
↓
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/aliases.regexp

# myhostname = 
↓
myhostname = foo.com

# inet_interfaces = all
↓
inet_interfaces = all


mydestination = $myhostname, localhost.$mydomain, localhost
↓
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

3) メールの転送条件を変更する

vim /etc/postfix/aliases.regexp

新規ファイルを作成し、1行目に以下を追加

/^hoge[0-9]{1,}/    admin@foo.com

※2015/12/03 追記
ローカルに保存する(テキストファイルに追記されていく)場合は以下のように書く

/^hoge[0-9]{1,}/    >>/foo/bar/baz.txt

4) postfix再起動

service postfix restart

5) foo.comのMXレコードにサーバーのホスト名を登録し、反映を待つ。
6) DNSが反映されたら、tail -f /var/log/maillog して、実際にメールを送信してみる。
7) hoge[0-9]{1,} からくるメールが全てadmin@foo.comに転送されれば成功。
転送されなければtail しているログをみて頑張る。

Ⅲ. FAQ

Q. ログでは送信されたことになってるが、メールが届いていない
A. 迷惑メールに届いているか確認する

Q. 受信できない
A. ポートを開放する TCP 25番

Q. 送信できない
A. OP25B

参考文献
https://web.archive.org/web/20150814070717/http://ultrah.zura.org/2013/02/08/%E8%87%AA%E5%88%86%E7%94%A8%E3%83%A1%E3%83%A2-postfix%E3%81%AE%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E8%A8%AD%E5%AE%9A%E3%81%A7%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E4%BD%BF%E3%81%86/