2015年9月10日木曜日

OS X Server 4.x (Yosemite) のメールサーバーでキャッチオールアカウントを設定する方法

もともとメインがLinuxのサーバー構築なんだけれど、自分のサーバーにActiveSyncをオープンソースで構築するのが面倒で、メールサーバーがPush非対応だった。
すでに動いているのでなかなか手をつけれないからどうしようかな、Exchangeサーバーでも作って家で鯖立てようかなとか思ったんだけど、小さいPC買わないといけないからお金もったいないなとか思っていたら、Mac Miniがあることを思い出した。BootcampでWindows Server 2012でも突っ込んでExchangeにしようかなと思ったけどれど、MacはServer OSになんと2400円程度で変更できる。さらに調べたらAPNsとかいう素敵機能があるじゃない。うちはもうiOS端末しかないからこれでいいなということで、サクッとお金払ってメール構築。OCNなので固定IPが高かったり、色々ポートふさがれてそうだったりするので、VPNで固定IPをもらえるInterlinkのMyIPを利用することにした。

あらよあらよと物の10分程度でメールサーバー完成。Pushも動いているようで、すげーなAppleとか思っていたんだが、いつも全メールを受信する設定(これをcatch-all accountと言う)にしているのだがその設定方法がわからない。どういうことかというと、@の前の部分がなんであれ受信するアカウントを作る。これにより、bounceを起こさなくなる。また、サイトへ登録するとき等にメアドの名前部分を登録したサイトにしておけば、SPAMメールの流出元がわかるというメリットがある。

詳しく調べてみると、OS X Server 4.0はpostfixをMTAとして使っているようだ。
コマンドラインでつらつらと設定を書くのは簡単だが、ここはMACなのでGUIでできないか調べたところ、aliasは現在ユーザー設定のメールに書くことになっているらしい。
試しにメールアドレスに*@domain.con とか入れてテストメールを送ってみたがbounce。本来は@domain.con と@の前に何も入れないのだが、どうも無理なようだ。
そこで仕方なくvirtual_usersを編集してpostmapでハッシュテーブルを再構築してみたが、このファイルは自動で生成されているようでここに書いても無駄になるよとかいてある。そこで目をつけたのがvirtualという設定ファイル。どうやらなににも使われていないファイルでハッシュDBファイルもない。純正postfixの名残りか?
ということでこのファイルを利用しよう。

まずはrootになる。
sudo su -
と入力してパスワードを入力すればシェルのプロンプトが#に変わる。
次にvirtualを編集する。編集は好きなので行えばいいが自分はviを利用している。

# vi virtual

@domain.con hogeuser

と記入して(domain.conとhogeuserは各自の環境に揃える)保存する。

次にハッシュデータベースを作る

# postmap virtual

これでvirtual.dbというファイルができているはずだ。できていなかったらvirtualへフルパスでかいてみるといい。
これだけだとvirtual.dbが利用されているかどうかわからないので調べてみたら、やはり使われていないようだ。

main.cfの中を見ていくと

virtual_alias_domains = $virtual_alias_maps hash:/Library/Server/Mail/Config/postfix/virtual_domains
virtual_alias_maps = $virtual_maps hash:/Library/Server/Mail/Config/postfix/virtual_users

と書かれている。$virtual_mapsという変数があるのだが、これをサーチしてもファイルには書かれていないのでこれを利用することにした。

virtual_maps = hash:/Library/Server/Mail/Config/postfix/virtual

このように行を追加してから保存する。

そして最後に

メールをOFF/ONしてやればいい。コマンドでどうやるのか不明。
# systemadmin stop mail
# systemadmin start mail
でできること確認(2015/9/17)

しかしOS X Server 4.0なかなかよくできている。再起動しないでサーバーになってしまうのだから驚いた。


0 件のコメント:

コメントを投稿