Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

 メールサーバ( Postfix )

私は独自ドメイン取得をきっかけにメールサーバの構築に踏み切りました。
一般的な電子メールは SMTP ( Simple Mail Transfer Protocol )と POP ( Post Office Protocol ) というプロトコルを使用します。

Vine Linux にはデフォルトで「 Postfix 」というメールサーバ( MTA:Massage Transfer Agent )が標準でインストールされます。
この Postfix は「 高速で高機能。sendmail からの移行が容易。設定簡単! 」らしく、人気のある MTA です。

このページでは基本的な Postfix の設定と、不正中継されない為の一歩踏み込んだ設定方法をご紹介致します。
メールサーバの構築は、ダイナミック DNS サーバが MX レコードの設定に対応している事が必須です。
( miniDNS での MX レコードの設定方法は、当サイト内の「 MX レコードの設定 」で行っています。 )
また、独自ドメインでも、サブドメインでも同様に設定する事が可能です。

このページのみの設定方法では、サーバ機と同一 LAN 内にあるクライアントからしか自分のドメインのメールを送信できません。
これを外部からでも利用したい場合には、セキュリティ面で SMTP-AUTH と言う技術を導入する事をお勧めします。
Postfix を SMTP-AUTH に対応させる方法は、当サイト内の「 Postfix で SMTP-AUTH を実現 」で行っていますので、興味のある方はご一読下さい。
2003/06/14 追記

ページ内コンテンツ一覧

▲ページの最上部に戻る

 Webmin で基本設定

まずは、Webmin を利用して基本的な設定を行います。

Webmin にアクセスし、ログインします。
上部、メニューより「 サーバ 」をクリックし、「 Postfix の設定 」をクリックすると、「 Postfix メール エージェント 」画面が表示されますので、「 一般オプション 」をクリックします。

[ 図M-001 「サーバ」>「Postfix の設定」「Postfix メール エージェント」をクリック ]

図M-001 「サーバ」>「Postfix の設定」「Postfix メール エージェント」をクリック

一般メニュー 」画面が表示されますので、一番上部の表組の「 最も便利な一般オプション 」で、
メールを受信するドメイン 」欄に「 $myhostname, $mydomain 」と入力します。

[ 図M-002 「メールを受信するドメイン」欄に「 $myhostname, $mydomain 」と入力 ]

図M-002 「メールを受信するドメイン」欄に「 $myhostname, $mydomain 」と入力

次に同じページの「 このメール システムのインターネット ホスト名 」と「 ローカル インターネット ドメイン名 」に自分の取得したドメインを入力します。

[ 図M-003 「このメール システムのインターネット ホスト名」と「ローカル インターネット ドメイン名」に自分の取得したドメインを入力 ]

図M-003 「このメール システムのインターネット ホスト名」と「ローカル インターネット ドメイン名」に自分の取得したドメインを入力

上記三箇所を記入後にページ最下部の「 保存して適応 」をクリックします。

「 Postfix メール エージェント 」画面の最下部のボタンの文字が「 Postfix を停止 」と表示されている時は、Postfix が起動しているという事になります。

なんとこれだけの設定で Webmin での基本設定は終了です。
と言うか、これで「一応」使える様になっただけです。この状態での運用はセキュリティ上厳禁です
スパムメールなどの踏み台にされる可能性があります。

次の項目「 メール不正中継の拒否 」を必ず実施して下さい。

▲ページの最上部に戻る

 メール不正中継の拒否

ここからは、Webmin は使用しません。
Webmin を使用しても設定可能な様ですが、どこに何を書けば分からないので、直接設定ファイルを編集します。

Postfix の設定ファイルは、Vine Linux 2.6 のデフォルトでは
/etc/postfix ディレクトリ内にある main.cf です。

Postfix では、メールの送受信や中継の設定を細かに指定する事ができます。

参考までに、以下にアクセス制御用の設定項目を示します。

アクセス制御用の設定項目

設定項目 説明
disable_vrfy_command Yes / No で指定。Yes を指定すると、SMTP の VRFY コマンドが使用不可になる。
strict_rfc821_envelopes Yes / No で指定。Yes を指定すると、RFC822 で定義されている書式に適合しないメールアドレスが通知された場合、受信を拒否する。
smtpd_helo_required Yes / No で指定。Yes を指定すると、HELO コマンドでホスト名を通知しないホストの接続を拒否する。
smtpd_client_restrictions Postfix サーバへの接続の許可/拒否を指定する事が可能。
smtpd_helo_restrictions HELO コマンドで通知された FQDN に応じて接続の許可/拒否する事が可能。
smtpd_recipient_restrictions SMTP の RCPT TO コマンドで通知される宛先メールアドレスに応じてメール受信の許可/拒否する事が可能。
smtpd_sender_restrictions SMTP の MAIL FROM コマンドで通知される送信元メールアドレスに応じてメール受信の許可/拒否する事が可能。
smtpd_etrn_restrictions SMTP の ETRN コマンドの使用を制御する。

次に、各アクセス制御用の設定項目に記述できる設定値を以下に示します。もちろん参考までに。

各アクセス制御用の設定項目に記述できる設定値

設定値 説明
check_relay_domains $mydestination , $inet_interfaces , $virtual_maps , $relay_domains 、各パラメータ値にリストされたアドレス宛かチェックする。
permit_mynetworks 自サイトのネットワークからの接続を無条件で許可する
permit 常に接続を許可する。設定項目の最後に記述する事で「それ以外は中継を許可する」という意味になる
reject_invalid_hostname ホスト名が不正(怪しい)なホストの接続を拒否
reject_sender_login_mismatch SMTP の認証時に使われたユーザ名とSMTPの「MAIL TO」コマンドで通知される送信元メールアドレスのユーザ名が違えば拒否する。
reject_unknown_client IP アドレスからホスト名への逆引きができないホストの接続を拒否する。
eject_unknown_sender_domain 送信元のメールアドレスのホスト名( @ より右 )が DNS に登録されていなければ接続を拒否する。

これらを踏まえて Postfix の設定ファイルを編集して行きます。
先述の main.cf を vi やテキストエディタなどで開きます。

まずは、変更すべき箇所を編集していきます。

# Postfix から送信される全ての発信元アドレスは、発信元はこのネットワークのユーザからなので $mydomain を指定する。
# $mydomain は後で記述します。
myorigin = $mydomain

# 次の項目の mynetworks でサブネットを指定するので、subnet を指定する。
mynetworks_style = subnet

# Postfix を中継できるクライアントを制限する。
# ネットワークアドレス/サブネットと、IPアドレスが定義できる。複数設定の場合は、","(カンマ)で区切る。
# ここに記述したネットワークからの接続要求は無条件で許可します。
mynetworks = 192.168.0.0/24, 127.0.0.0/8

# メール受信のインターフェースを設定
inet_interfaces = all


2003/06/14 赤文字部分追記

次に新規で追加して行く項目を記述します。
記述場所はでこでも構いませんが、Webmin が最下部に追加する様なので、最下部に追加します。
main.cf の最下部には、Webmin でちょこっと設定した為に以下の記述があると思います。

mydomain = example.com
mydestination = $myhostname, $mydomain
myhostname = example.com

この下に先ほどの設定項目 & 設定値を記述して行きます。

# HELO コマンドでホスト名を通知しないホストの接続を拒否
smtpd_helo_required = yes

# SMTP の VRFY コマンドを使用不可にする
disable_vrfy_command = yes

# RFC822 で定義されている書式に適合しないメールアドレスが通知された場合、受信を拒否する
strict_rfc821_envelopes = yes

# この2つに「 no 」を指定すると何でもかんでも転送拒否してしまいます。
allow_percent_hack = yes
swap_bangpath = yes

# ソース・ルート形式で指定されている宛先メールアドレスを拒否しています。
allow_untrusted_routing = no

# Postfix サーバへの接続は、自サイトのネットワークからの接続を無条件で許可し、IP アドレスからホスト名への逆引きができないホストの接続を拒否。
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit

# ホスト名が正しい書式でホスト名を通知してきたホストのみ接続を許可
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_unknown_client, permit

# ホスト名と転送先ドメインとして許可されているドメインが宛先メールアドレスに指定されているものを受信
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, check_relay_domains

# 実際には存在しないドメイン名が送信元メールアドレスに使われているメールの受信を拒否
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

# SMTP の ETRN コマンドの使用をホスト名が不正(妖しげ)なホストには使用不可としている
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname


これらの設定が出来たら保存し、Postfix の再起動をかけ、設定を反映させます。
Postfix の再起動は Webmin 上からでも構いません。


注 意
これで、Postfix はメールの送受信が可能になりました。
それに伴い、ルータの設定が必要です。メール送受信関連では、SMTP が「 25 番ポート 」、POP が「 110 番ポート 」を使用しますので、ルータの設定を変更します。
ルータの 25 、110 番ポート向けのパケットをサーバ機のローカルIPアドレスである、192.168.0.2 に変換しなければなりません。
私が使用しているルータ( MELCO BUFFALO Broad Station BLR-TX4 )での設定画面は、ルータの設定(Webサーバ用)で解説しています。
TCPポート:110 」のプロトコルと、「 TCPポート:25 」のプロトコル追加するだけです。

▲ページの最上部に戻る

 メール不正中継拒否のテスト

上記の不正中継拒否の設定が出来たら本当に不正中継が拒否されるかテストしてみましょう。

テストは以下のサイトで可能です。

NETWORK ABUSE CLEARINGHOUSE - Mail relay testing
確認くんをクリックし、自分のグローバル IP アドレスを確認します。(プロキシ(代理)サーバーを経由しないで下さい。
確認くんを開いて上から3つ目の「現在接続している場所(現IP)」があなたのIPアドレスです。
このIPアドレスを NETWORK ABUSE CLEARINGHOUSE - Mail relay testing の「 Address to test:(as host name or dotted quad) 」の欄に入力し、「 Test for relay 」をクリックするとテストが開始されます。

17 種類のチェックが行われ、不正中継に問題が無ければ、最下部に「 All tests performed, no relays accepted. 」と表示されます。
もし不正中継される様であればひっかかった時点でテストは終了します。

▲ページの最上部に戻る

 メールアカウントの作成

ここで、肝心のメールアカウントの作成に入ります。
Vine+Postfix のデフォルトでは、Vine のユーザがそのまま Postfix のユーザ(メールアカウント)になります。

例えば、「 webmaster@example.com 」というメールアドレスを使いたいのであれば、「 webmaster 」という Vine の一般ユーザが必要になります。

Webmin を使用したユーザの追加は、当サイト内の「 FTP サーバ( ProFTPD ) > ユーザの追加 」で行っています。

▲ページの最上部に戻る

 送受信テスト

いよいよ送受信のテストを行います。
私の考える送受信テストのチェック項目を以下に示します。

  1. サーバ機と同一 LAN 内 PC から同じユーザで(自分自身で)送受信
  2. サーバ機と同一 LAN 内 PC から違うユーザ( LAN 内で )と送受信
  3. サーバ機と同一 LAN 内 PC から外部のパソコンへの送受信
  4. 外部の PC から サーバ機と同一 LAN 内 PC への送受信
  5. 外部の PC に自分のメールサーバのメールアカウントを設定し、送受信
  6. 携帯電話との送受信( J-PHONE , docomo , au など )

サーバ機と同一 LAN 内のクライアント PC のメーラーの設定方法

外部のクライアント PC のメーラーの設定方法

送受信して特に問題が無ければ、メールサーバは開局しています。

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net