2011年4月28日木曜日

sendmailでGmailみたいに複数アドレス使えるようにする方法

Gmailではメールアドレスのアカウント部分に+(プラス)文字を入れると、それ以降の文字列が無視されて、複数アドレスが使えるっていう機能がある。
つまりhoge@gmail.comっていうアドレスを持っていれば、hoge+moge@gmail.comでもhoge@gmail.comで受け取れるというもの。
例えば、この機能を利用して登録サイト毎にメールアドレスを変えておけば、メールアドレスが漏洩してダイレクトメールが来るようになったときに、どのサイトから漏れたかがわかる。

ってこんなの自宅サーバでも会社でも、とっくの昔にやってたぜってことでその設定方法を紹介しておく。ただし、うちのやり方ではデリミタは+(プラス)ではなく.(ドット)。

/etc/mail/sendmail.cfに次のような行がある。
R$+ < @ $=w . >         $#local $: $1                   regular local name
これは、ホスト/ドメイン名付きのメールアドレスをローカル判定する部分なので、この上に
R$+ . $+ < @ $=w . >            $#local $: $1           regular local name
という行を追加。
あとローカル上でのアカウント部だけの判定部分
R$+                     $#local $: $1                   regular local names
っていう行があるので、同様にこの上に
R$+ . $+                $#local $: $1           regular local names
という行を追加する。
要は「regular local names」ってコメントされている行の上に、パターンに「. $+」を追加したルールを増やせばよい。

で、sendmailを再起動するなりSIGHUPを送るなりすれば、
hoge.moge@hoge.jpもhoge.psn@hoge.jpもhoge@hoge.jpに送られるようになる。

※当然だが、sendmail.mcからsendmail.cfを新たに生成した場合、この修正は上書きされる。

2011年4月2日土曜日

Ubuntu10.10にGNU Prolog1.3.1

今時GNU Prologのインストールなんて「Ubuntuソフトウェアセンター」でバイナリをダウンロードすればいいだけの話だが、昔ながらのUNIXプログラマはソースからコンパイルするのです。

gplc -c --fast-math fd2c.pl
fd2c.pl:215-220: fatal error: exception raised: error(instantiation_error,sort/2)
compilation failed
make[1]: *** [fd2c.o] エラー 1

だめじゃん。orz...

このエラーメッセージそのままコピペしてぐぐったら、すぐにこのページが引っかかった。
http://comments.gmane.org/gmane.comp.gnu.prolog.general/1170

ってことで、
./configure --with-c-flags='-O3 -fomit-frame-pointer -fno-strict-aliasing'
でコンパイルは通る。