FreeBSD で LAN 内メールサーバーにリレーする最短手順

この記事を読むのに必要な時間は約 8 分です。


VirtualBox にて、FreeBSD の仮想マシンを利用して、実験用、開発用などに色々と使っています。

sendmail・postfix・qmail 等の MTA の 設定を作りこみたくはないものの、cron 結果等の root 宛メールだけ、外部の受信可能なメールに転送したい、と思いました。

幸い、既に ISP へのリレー設定を済ませているメールサーバーがあるため、仮想サーバーの root 宛メールを、受信可能なメール宛先に転送として、LAN 内メールサーバーにリレーできれば OK なはず、ということでやってみました。

sendmail ではうまくできず、postfix でやってみたら、まぁまぁ簡単にできたかと思います。

その際の作業メモとして記事に残しておきたいと思います。

logo-FreeBSD

レベル感としては、動けば 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 に届けられる

実際の作業は以下の通りです。

  1. postfix インストール
  2. sendmail 停止
  3. postfix 設定
  4. alias 設定
  5. 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]

 

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です