月別アーカイブ: 2008年1月

Postfix メール送信サーバーを構築する

対象OS

Mac OS X 10.4 (Tiger)

はじめに

一般的に電子メールサービスは、加入しているインターネットプロバイダが提供するものが使われています。メール受信については、IMAP で管理するのが便利ですから、自前で IMAP サーバーを構築するメリットは高いのですが、送信については単にプロバイダが用意するメール送信サーバーを使用するだけで事足りると思います。

ただ、プロバイダのメール送信サーバーが使えない状況もあります。たとえばそのプロバイダが SMTP-AUTH や POP before SMTP などをサポートしていないために、自宅外からメールが送信できない場合などです。

筆者も最近プロバイダを変えて、上記の目に遭ってしまいました。でも、Mac ならば大丈夫。OS X にはすでにメール送信ソフトが入っていますから、簡単にメール送信サーバーを構築できます。

ここでは、Postfix を使って LAN 内外からメールを送信するシステムの構築を開設します。送信のための認証は SMTP-AUTH を使用します。LAN 外からのメール送信の際には SSL を使用してパスワードの漏洩を防ぐように設定します。




インストール

設定に使用する Postfix および OpenSSL はすでに Mac OS X Tiger に標準でインストールされている。そのためソフトインストールの必要はない。

設定

設定にあたって

設定の例として、マシン名などをここでは下記の通りとしている。これらは適宜ここの環境に合わせて読み替えること。

Postfix 送信メールサーバー名 server  
ドメイン local Bonjour で名前解決する際のドメイン
メール送信を受け付ける
ネットワークセグメント
192.168.0.0/24  
プロバイダが提供する
メール送信サーバー
smtp.provider.com  

X.509 証明書を用意する

個人で使うだけなので、正式な証明書を申請するのではなく、自己署名したものを作成する。

# cd /System/Library/OpenSSL/certs/
# openssl genrsa -out server.key 1024
# openssl req -new -x509 -key server.key -out server.crt
(画面に従って黄色のようにキー入力が必要)
(中略)
Country Name (2 letter code) [AU]:JP ... 住んでいる国コード
State or Province Name (full name) [Some-State]:Hyogo ... 都道府県名
Locality Name (eg, city) []:Kobe ... 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:personal use ... 個人使用なので
Organizational Unit Name (eg, section) []: ... 個人使用なのでブランク
Common Name (eg, YOUR name) []:貴方の名前を入力
Email Address []:貴方の e-mail アドレスを入力

Postfix の設定

# cd /etc/postfix
# vi main.cf

-- 黄色のように変更する

-- 69 行目あたり 行頭の # を削除
myhostname = server.local ... メール送信サーバ名

-- 76 行目あたり 行頭の # を削除
mydomain = local

-- 91 行目あたり 行頭の # を削除
myorigin = $myhostname

-- 106 行目あたり 行頭の # を削除
inet_interfaces = all

-- 153 行目あたり 行頭の # を削除
mydestination = $myhostname, localhost.$mydomain, localhost

-- 253 行目あたり 行頭の # を削除
mynetworks = 192.168.0.0/24, 127.0.0.0/8

-- 303 行目あたり 行頭の # を削除
relayhost = smtp.provider.com

-- 436 行目あたり 行頭の # を削除
mailbox_command = /usr/bin/procmail

-- 637 行目あたり
# inet_interfaces = localhost ... コメント化

-- 655 行目あたり
# smtpd_tls_key_file = ... コメント化

-- ファイルの最後に、以下を追加する
# smtp auth
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous, noplaintext

smtpd_use_pw_server = yes
enable_server_options = yes
smtpd_pw_server_security_options = plain, login, cram-md5
broken_sasl_auth_clients = yes

smtpd_tls_cert_file = /System/Library/OpenSSL/certs/server.crt
smtpd_tls_key_file = /System/Library/OpenSSL/certs/server.key
smtpd_tls_loglevel = 1
smtpd_use_tls = yes
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
tls_random_source = dev:/dev/urandom
# cd /etc/postfix
# vi master.cf

-- 黄色のように変更する

-- 96 行目あたり 行頭の # を削除
tlsmgr    fifo  -       -       n       -       1       tlsmgr

下記の通りファイルを作成。

# cd /etc/postfix
# touch smtpd_scache.pag
# touch smtpd_scache.dir 

次に、Mac 起動時に Postfix を自動で起動する際のパラメータを下記のように修正する。

# cd /System/Library/LaunchDaemons
# vi org.postfix.master.plist

-- 黄色のように変更する

-- 10 行目あたりから始まる下記のブロックに下記黄色行を挿入
	<array>
		<string>master</string>
<!--
		<string>-e</string>
		<string>60</string>
-->
	</array>

-- 16 行目あたりから始まる下記のブロックに下記黄色行を挿入
	<array>
		<string>/var/spool/postfix/maildrop</string>
	</array>
	<key>OnDemand</key>
	<false/>
</dict>

以上の設定が完了したら、下記のようにMac を再起動して Postfix をリスタートする。代わりにマシンをリブートしても良い。


# launchctl stop org.postfix.master
# launchctl start org.postfix.master

2007.4.4 update:
launchctl だけでは Postfix が正しくリスタートしないのか、しばらくするとメール送信ができなくなるので Mac を再起動するように訂正。

基本設定確認

# postfix check

上記のコマンド実行にて何も表示されなければ基本の設定には問題なし。何か表示されたら、それに沿ってあらためて上記設定の通りになっているか確認しよう。(サーバー名など自分に環境に合わせる部分を適宜変更しているかもあわせて確認しよう。)

ファイアウォールの設定

Postfix サーバーとなる Mac の [システム環境設定] – [共有] を開いて、下記のポートを開けておこう。

ポート番号 プロトコル 説明
25 TCP SMTP

また、外出先などからもこのメールサーバーを使ってメールを送信する場合は、ルーターにて外部からの TCP:25 アクセスがこのサーバーに届くように port forwarding を設定しておこう。

メール中継しないようになっているか確認

メールサーバーを立てる際に気をつけなければ行けないのが、悪意ある者のメール中継をしてしまわないかということ。もしそうなっていると、SPAM の送信先を偽装するためのメール中継サーバーとして悪用されかねないためだ。上記までの設定をしていれば大丈夫なはずだが、念のために下記のように確認しよう。

項目設定

  1. www.abuse.netのサイトをブラウザで開く。
  2. A.で示した部分に今回設定したメールサーバーのグローバルIPアドレスまたは DNS で引けるサーバー名を入力する。
  3. B.で示した [Test for relay] ボタンをクリックする。


実行結果

その後、ずらずらとテスト結果が表示される。

最後に、赤枠で囲ったように “All tests performed, no relays accepted.” (全てのテストは完了しました。全ての条件でメールリレーされないようになっています。)と表示されれば、メール中継されないようになっていると判断できる。


メールクライアントの設定

きっとこのサイトを読んでいる人たちは十分わかっていると思うので、これについては割愛。(必要な人がいたら連絡ください。)

参考リンク