PHPでgethostnameとやるとホスト名がかえってきます。環境によってはgethostbyaddrでそれと同じ名前がかえってこない場合があります。
そういう環境でメールを送信したりすると、意図しないホスト名からメールを送信したことになったりします。
%php -r 'print gethostname();'
とやると。
mycomputer
と返ってきます。
php -r 'print gethostbyaddr('このマシンのIPアドレス');'
testcomputer.ドメイン
mycomputer.ドメインじゃないの?
ずっと謎だったんですが、やっと原因が分かりました。
原因は/etc/hostsファイルの書き方の問題でした。
これまで、同じコンピュータに複数の名前を付けるとき、次のように書いていました。
192.168.1.2 mycomputer.ドメイン mycomputer
192.168.1.2 testcomputer.ドメイン testcomputer
192.168.1.2 .....
これで目的のことは実現できていました。何の目的?apacheでバーチャルホストの機能を使って複数のサイトのテスト環境を作るためです。
いちいちDNSを設定したりしなくてすむので楽です。
これでも意図しないホスト名が使われる場合があること以外何の問題もないんですが、
あまり好ましくない状態であるには違いない。
hostsファイルの正しい書き方は次のようになります。
192.168.1.2 mycomputer.ドメイン mycomputer testcomputer.ドメイン testcomputer ...
一番左に正式なホスト名を書きます。一番上だとだめなんですね。
何十個もテスト環境を作ると、ものすごくわかりにくいですが、しかたない。