この記事を読むのに必要な時間は約 8 分です。
VirtualBox にて、FreeBSD の仮想マシンを利用して、実験用、開発用などに色々と使っています。
sendmail・postfix・qmail 等の MTA の 設定を作りこみたくはないものの、cron 結果等の root 宛メールだけ、外部の受信可能なメールに転送したい、と思いました。
幸い、既に ISP へのリレー設定を済ませているメールサーバーがあるため、仮想サーバーの root 宛メールを、受信可能なメール宛先に転送として、LAN 内メールサーバーにリレーできれば OK なはず、ということでやってみました。
sendmail ではうまくできず、postfix でやってみたら、まぁまぁ簡単にできたかと思います。
その際の作業メモとして記事に残しておきたいと思います。
レベル感としては、動けば OK という程度ですので、正しい設定になっていない部分もあります。また、SMTP-AUTH など、postfix の設定つくりこみ等は解説していませんので、あしからず。
作業環境・前提
- VirtualBox : 4.3.30 (今回は関係ありません)
- FreeBSD : 10.1-RELEASE
また、仮名で以下の名前を使います。
- 新サーバー ホスト名 : new.local
- 新サーバー root 宛メール : root@new.local
- 外部受信可能なメール : XXX@gmail.com
- 設定済みの LAN 内メールサーバー : mail.local (192.168.0.999)
LAN 内のメールは自動的にリレー OK に設定済み
作業概要
以下の流れを構築します。
- new.local にて、root@new.local へのメールが発生
- new.local にて、root@new.local を XXX@gmail.com に転送しはじめる
- new.local から mail.local に XXX@gmail.com 宛メールをリレーする
- mail.local から 外部 (インターネット上) へ XXX@gmail.com 宛メールをリレーする
- インターネット上で XXX@gmail.com が Gmail に届けられる
実際の作業は以下の通りです。
- postfix インストール
- sendmail 停止
- postfix 設定
- alias 設定
- postfix 起動
1. postfix インストール
pkg を使うと簡単です。
new.local:/ # pkg install postfix #何かインストール/アップデート等するか聞かれたら y ... ? [y/N] : y # mailer.conf で利用するか?みたいな質問も y を回答しておきます
2. sendmail 停止
稼働中の sendmail を停止します。
new.local:~ # /etc/rc.d/sendmail stop
再起動後に、自動起動しないよう /etc/rc.conf に以下を追記します。
ついでに、postfix の利用可能設定も追記しておきます。
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" postfix_enalbe="YES"
3. postfix 設定
/usr/local/etc/postfix/main.cf を以下の通り編集します。
#コメントを外し、host名を入力 (Global に逆引きできなくても動きます) #myhostname = host.domain.tld ↓ myhostname = new.local #コメントを外し、domain 名を入力 (Global に逆引きできなくても動きます) #mydomain = domain.tld ↓ mydomain = local #自サーバーに取り込む範囲の指定 : 送信専用なので、コメントを外すのみ #mydestination = $myhostname, localhost.$mydomain, localhost ↓ mydestination = $myhostname, localhost.$mydomain, localhost #リレー判定などに用いるが、自サーバーからのみ送信するので、そのままにします mynetworks_style = host #リレー先の指定 : LAN内のメールサーバーを指定します (DNS引けるならホスト名でも可) #relayhost = [an.ip.add.ress] ↓ relayhost = [192.168.0.999] #多分不要ですが、なんとなく #home_mailbox = Maildir/ ↓ home_mailbox = Maildir/
4. alias 設定
/etc/aliases にて、root 宛メールの転送設定を記述します。
# root: me@my.domain ↓ root: XXX@gmail.com
外部で受信可能なメール宛先を設定します。
aliases を変更したため、newaliases コマンドで反映します。
new.local:~ # newaliases
5. postfix 起動
new.local:~ # /usr/local/etc/rc.d/postfix start
sendmail でうまくいかなかった点
sendmail でも、リレーするだけであれば、/etc/mail/submit.cf を以下のように書き換えてみたり、/etc/mail にて、make cf やら submit.mc を編集してやらやってみてできました。
# D{MTAHost}[127.0.0.1] D{MTAHost}[192.168.0.999]
しかし、alias を効かせられず、XXX@gmail.com 宛ではなく、root@new.local のまま、インターネットの海へと旅立ってしまいました … 。
自身担当の local への配送を行う前に、外部へリレーしてしまっているのだと思われますが、それ以上の設定を行うために sendmail の動作・設定を学びたくなかったので、馴染みの postfix に切り替えてみたら、意外とあっさり済みました。
今回は以上です。
[pn-amzn-freebsd]