LoginSignup
2

More than 5 years have passed since last update.

FreeNAS 9.3 jail に sendmail を設定・1

Last updated at Posted at 2016-02-07

NL54L + FreeNAS に jail を新しく作って MTA を動かします。平たく言うとメールサーバを FreeNAS jail で立てる、と。

メールサーバみたいな基本的なサービスは母艦の方に立てるのが筋だと思います。が、母艦は FreeNAS だし、UNIXの本来の哲学「大鑑巨砲主義の否定」に立って、独立した環境にしたいと考えたのでした。歪んだ理解ですかね?まぁいいや。

MTA は sendmail を選択。理由は複数。

  • FreeBSD のデフォルトである
  • 技術で尊敬できる友人の言葉: 「MTA は sendmail で十分!」
  • sendmail でも Maildir 形式を扱えるらしい →Sendmail で Maildir を使う

という訳で、今更ながら sendmail を勉強しながら設定してみました。とりあえず、ごく基本的な設定で、電子メールの受け答えが出来るようになる所まで。

参考文献

導入

jail 構築後、インストールは不要。 FreeNAS にはデフォルトで入っています。但しデーモンとして起動はしていません。

まずは sendmail の設定、それからコンパイルして起動です。が、メールの格納ディレクトリとしては、 FreeNAS 母艦の方でストレージを用意したい。この辺から段々怪しくなってきますな。

jail へのストレージの追加

FreeNAS のメインメニューから、適当なデータセットを作ります。

  • 名前はとりあえず mail とか。
  • クォータは0、即ち容量制限無し。

それから、新規に作成した jail へ、そのデータセットを割り当てます。場所は /media/mail とします。こんな所に凝っても管理しにくくなるだけです。って、いつも下らない凝り方で散々苦労するお前が言うか:sweat_smile: >自分

そして基本的な権限の設定。

# ls -l /media
total 1
drwxr-xr-x  2 mailnull  mailnull  3 Jan 31 03:04 mail

設定ファイル

/etc/mail/access

アクセス定義です。

To:mydomain.example.com  OK
Connect:10.0.1           RELAY

example.com は例示用に予約されているドメインです。自分のドメインに置き換えてください。

私の家庭内LANのIPアドレスは 10.0.1.* ですので、それに合わせて中継を設定します。

/etc/mail/aliases

メールアドレスの別名定義です。 root を自分 (katz) 宛にする設定を末尾に追加しました。また、ユーザーはシステムで定義する本物のアカウントではありません。偽物です。仮想ユーザ…って用語はありませんよね、何と言うんだろう。勉強不足でスミマセン。

# cd /etc/mail
# mv aliases aliases.org
# cp -p aliases.org aliases
# vi aliases
# diff -u0 aliases.org aliases
--- aliases.org 2014-07-11 08:50:16.000000000 +0900
+++ aliases     2016-01-30 18:40:27.880695923 +0900
@@ -79,0 +80,4 @@
+
+# 2016.01.30. by Katz
+root:          katz
+katz:          /media/mail/katz

/etc/mail/local-host-names

このサーバで受信対象となるドメインを登録します。 /etc/mail/access で OK としたドメインですね。

mydomain.example.com

/etc/mail/virtusertable, /etc/mail/mailertable

この2つはとりあえず不要という事で。

起動

# cd /etc/mail
# make
cp freebsd.mc mymachine.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/
/usr/share/sendmail/cf/m4/cf.m4
 mymachine.mc > mymachine.cf
cp freebsd.submit.mc mymachine.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/
/usr/share/sendmail/cf/m4/cf.m4
 mymachine.submit.mc > mymachine.submit.cf
/usr/sbin/makemap hash access.db < access
chmod 0640 access.db
/usr/sbin/sendmail -bi -OAliasFile=/etc/mail/aliases
/etc/mail/aliases: 30 aliases, longest 10 bytes, 305 bytes total
chmod 0640 /etc/mail/aliases.db

rc.conf を修正します。

--- rc.conf.org 2016-01-30 16:03:46.622695912 +0900
+++ rc.conf     2016-01-30 18:34:05.375695656 +0900
@@ -3,4 +3 @@
-sendmail_enable="NO"
-sendmail_submit_enable="NO"
-sendmail_outbound_enable="NO"
-sendmail_msp_queue_enable="NO"
+sendmail_enable="YES"

sendmail 起動。

# /etc/rc.d/sendmail start
Starting sendmail.

Firewallなど

メールの為の穴を開け、外からのメールを受信できるようにします。ウチの防火壁はネットの入り口に別の機械を置いて設定しています。またメール自体も、外部のサーバを通ってそこから転送する仕組にしています。というわけで詳細は省略。

実験

適当なスマホか何かを使用し、今回のメールサーバで受信されるような宛先でメール送信。うまく受信できると、mbox形式で /media/mail/katz にメールが追記されます。

更に別PCから telnet で接続し、「外」を通って受信するようにメール送信。手順の詳細は省略。最初に参考文献として挙げたサイトを参照。mboxに受信できたメールのヘッダを見れば経路がわかります。何事も無かった事を確認。

次は

次は IMAP4 サーバを立てます。そこでlmtpサーバを設定してローカル配送をさせます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2