|目次|手順 0|1|2|3|A|B|C|D|E|F|G|H| I |J|K|L|M|N|O|P|Q|
作成日:2005年10月23日、更新日:2006年02月16日 作成:鷹の巣Windows95/98/Me/NT/2000/XP用のメールサーバーインターネットMail Server Radishの設定例を紹介します。
以下の説明では、ルータ配下のLAN内にメールサーバー(SMTPサーバーとPOP3サーバー)を設置します。LAN内のプライベートIPアドレス(局所機番)は、192.168.0.0~192.168.0.255としています。このLAN内のプライベートIPアドレスは、192.168.0.0/24(省略形では、192.168.0/24)と表示します。ルータのプライベートIPアドレスを192.168.0.1とし、メールサーバーをインストールしたマシンのプライベートIPアドレスを192.168.0.2としています。
Radishドキュメントを参考に設定しました。フリーソフト(フリーウェア)ですが、機能的には、ArGoSoft Mail Server Plus版と同等です。以下の設定図は、RadishのVer.3.0.0-b031(2006年01月23日付)で作成致しました。
目次
私がインターネット用Mail Serverとして、Radishを使用した理由は、以下の特徴があり、機能的には、ArGoSoft Mail Server Plus版と同等です。機能的に上を見れば、きりがありませんが、メーリングリスト等を望まない限り、安心して使用出来ます。
また、Webページからフォームメールを送信することもできます。実際に使用している例として、「鷹の巣」の自宅サーバーへの連絡メールや自宅メールサーバー受信試験用入力があります。詳細は、Windows自宅サーバー用フォームメールの設定方法(総集編)をご参照願います。
全体(Ver.3.0.0-b031)の特徴
SMTPサーバー(Ver.3.0.0-b031)の特徴
POP3サーバー(Ver.3.0.0-b031)の特徴
POP before SMTPについては、おいでんホームページさんの【おいでん講座:POP before SMTPとは何ぞや?】をご参照願います。 DRAC(Dynamic Relay Authorization Control)のこと等も記載されています。
インストールは、極めて簡単です。以下に示します様にWindowsのシステムの入っているドライブ以外にインストールされることを推奨します。
Radishダウンロードから、lzh圧縮された実行ファイルを入手し、解凍します。
解凍して出来たファイル(Radish.exe等)を稼動させるフォルダに移動させます。以下の説明では、D:\WWW\radishというフォルダに設置した場合を説明しています。設置するフォルダ名のパスには、半角スペースを含まない様にして下さい(悪い例.C:\Program□Files\radish)。必須ではありませんが、これは少しでも障害が発生するのを防ぐためです。
稼動させるフォルダから、Radish.exeを起動させるとインストールは完了です。
上記のインストールでは、D:\WWW\radish\mbox\ユーザ名というフォルダにメールユーザの本文が蓄積されます。
次に次項の設定を行います。
安全にインターネット用メールサーバーを構築するために以下の方針で設定を行います。
Radishに実装されているPOP3の認証機能は、USER認証とAPOP認証です。インターネット上のリモート端末から、自宅メールサーバーを使用してメールの送受信を行う場合、USER認証では、インターネット上にパスワードとメール本文がそのまま流れます。また、APOP認証では、メール本文がそのまま平文で流れますので、注意して下さい。ここでは、セキュリティ上LAN内だけから、メールの送受信を行う様に設定を行います。
注)LAN上のメールクライアント機がDHCP機能によって、非固定IPアドレスを使用している場合は、バインドアドレスや中継リスト欄には、
192.168.0.2~254 や 192.168.0.*のような省略した書き方はできません。 <---重要
Radishを最初に起動しますと、下図の様な画面になります。(ポート番号は、SMTPサーバーのTCP25番だけで、インストールしたサーバー機の自己診断用IPアドレス(127.0.0.1)で待機します。)
「設定(S)」の「SMTP/POP3サーバ(S)」の設定を左クリックして、「SMTP/POP3サーバの設定ダイヤログ」を起動します。


「SMTP/POP3サーバの設定ダイヤログ」が起動されると、以下の表示となります。

この画面を以下の様に変更します。

インターネット上で使用する自宅SMTPサーバーの場合もFQDN表記のホスト名にする必要がありますが、一台のホスト(計算機)で、構築する場合がほとんどで、またホスト名の部分を短くするのが望ましいことから、ホスト部ドメイン名(例.mail1等)を省略し、ドメイン名(example.com)をそのまま使用したりしています。上の例では、ドメイン名(example.com)やダイナミックDNSで、割り当てたサブ・ドメイン名(example.hn.org)をそのまま使用しています。
但し、この様なホスト部ドメイン名を省略したメールアドレスを使用してメールを受信するには、DNSサーバーのMXレコードで、メール配送先をFQDN表記のホスト名から、ホスト部ドメイン名を省略したドメイン名に変更しなければなりません。
前項の画面の「SMTサーバー」タブを左クリックして、以下の様に設定します。

前項の画面の「POP3サーバー」タブを左クリックして、以下の様に設定します。

LAN内のクライアント機から見たPOP3サーバー機の自身のプライベートIPアドレスだけを設定します。(インターネット側から110番ポートにアクセス出来ない様にして下さい。)これは、USER/PASS認証では、パスワードが平文でインターネット上を流れ、パスワードが盗聴される恐れがあるためです。(APOP認証は、パスワードは、暗号化されます。)
メールクライアントがLAN内だけの場合は、ルータでのPOP3ポート110番の静的NAT結合(ポートフォワーディング)は、不要です。又、WAN側(外部のインターネット側)より擬装したパケットが入ってこない様、ルータ等にプライベートIPアドレスのフィルタの設定が必要です。
INADDR_ANYを設定して、POP3サーバーのTCP110番ポートをインターネットに開放しますと、インターネット上から、メールを読出せる様になります。しかし、本例ではセキュリティが著しく低下しますので、設定しません。
サーバー機にウィルス駆除ソフトのAVGなどが入っている場合で、POP3 Proxy Serverが介在する場合、Radish独自のパスワードの変更コマンド(CHPS)が使用できません。メールのクライアントから、Webサーバーを通してパスワードの変更ができる様にするには、ここにサーバー機の自己診断用IPアドレス(127.0.0.1)を追加します。
以上で、「SMTP/POP3サーバの設定ダイヤログ」の設定が終了しました。画面下の「OK」ボタンを押しますと、下図の様な確認メッセージが現れます。

メールサーバに、postmaster や webmaster 等のユーザ名の登録を行います。
電子メールアドレスwebmaster@example.comの@より左側の太字部分の登録を行います。
「設定(S)」の「ユーザー(U)」の設定を左クリックして、「ユーザー設定ダイヤログ」を起動します。

最初の「ユーザー設定ダイヤログ」は、下図の様になっていますので、postmasterの行を左クリックして、ユーザーのpostmasterを選択します。

ユーザ名が選択されると、下図の様に「追加」と「削除」と「編集」ボタンが有効になります。

下図の様にパスワードを入力して「編集」ボタンを押し、パスワードを設定します。下記パスワードは、何文字まで入力できるかは不明です。

パスワードを設定を行いますと、下図の様にパスワード表示が「*」(アスタリスク)に変わります。

ユーザ名とパスワードを設定して「追加」ボタンを押しますと、下図の様に表示されます。

ユーザ名には、必須のユーザ名があります。メールアドレスのユーザー名として、「MAILER-DAEMON」と「postmaster」(RFC822の項6.3,RFC1123の項5.2.7,RFC2821の項4.5.1)と共に「abuse」(RFC2142)は、必須ですから、必ず追加しておいて下さい。
RFC2142(一般的なサービス、役割、機能に対するメールボックス名)の日本語訳の項3から項7より、まとめますと自宅サーバーでは、一般的に以下のユーザー名が必要になると、考えられます。
○必須のメールアドレス abuse@example.com <-------- 顧客関連用 postmaster@example.com <--- SMTPサーバー用 ○稼動しているインターネットサーバーに対するメールアドレス webmaster@example.com <---- WWWサーバー用 ftp@example.com <---------- FTPサーバー用 hostmaster@example.com <--- DNSサーバー用 ○ある方が良いと考えられるメールアドレス、 noc@example.com <---------- ネットワーク管理用 security@example.com <----- ネットワークセキュリティ用
これらの管理用ユーザー名を追加した場合、メーラに全部を登録するのは面倒です。従って、エリアス設定ダイヤログで別名として設定し、一つのメールアドレスに転送する設定を行なうことも出来ます。
上記の管理用ユーザー名の登録が終りましたら、通常のメールアドレスのユーザー名[家族で使用する名前(本例では、taroやhanako)等]を登録します。
下図の様に示します様に「エリアス設定ダイヤログ」と「自動受信設定ダイヤログ」と「ヘッダ変換設定ダイヤログ」と「ホスト設定ダイヤログ」は、便利な機能ですがそのまま使用します。




Radishをインストールしたサーバ機のブラウザからWebページが閲覧出来る場合、DNSサーバーの設定を行う必要はありませんので、初期状態のままにしています。ここでは、DNSサーバーの設定を行う必要はありませんが、メールサーバーとDNSサーバーの関係を説明します。
サーバをインストールしたマシンのプライベートIPアドレスの固定化がなされていて、下記の設定例の様に契約しているプロバイダのDNSサーバーが設定されていれば、「DNSサーバ設定ダイヤログ」の設定を行う必要はありません。
メールサーバーとDNSサーバーの関係
メールの受信は、かなり厄介です。メール受信試験やDNSサーバーの調査をしっかり行って下さい。
前述のDNSサーバーの調査で、ドメイン名を入力しますと、SPF record欄で、以下のような警告が出たりします。フリーメールのHotmail等は、spammer対策の為にDNSサーバーにSPFレコードが設定されていないと、メール受信を拒否するかもしれません。あるメールアドレスだけに送信ができない場合は、DNSサーバーや相手のSMTPサーバーの受信拒否設定なども関係しますので、注意が必要です。
Your domain does not have an SPF record. This means that spammers can easily send out E-mail that looks like it came from your domain, which can make your domain look bad (if the recipient thinks you really sent it), and can cost you money (when people complain to you, rather than the spammer). You may want to add an SPF record ASAP, as 01 Oct 2004 was the target date for domains to have SPF records in place (Hotmail, for example, started checking SPF records on 01 Oct 2004).
; SPF(Sender Policy Framework)レコードの定義 ; xxx@sakaguch.comでの送信は、 ; 接続元のIPアドレスが210.253.243.85で、MXレコードのSMTPサーバーがsmtp.sakaguch.comであり、 ; 逆引きホスト名にasahi-net.or.jpが含まれている。「~all」で、それ以外のものは、全て偽者である。 sakaguch.com. IN TXT "v=spf1 ip4:203.212.55.105 a mx ptr a:sakaguch.com mx:smtp.sakaguch.com include:asahi-net.or.jp ~all" ; xxx@smtp.sakaguch.comでの送信は、全く行っていない。 smtp.sakaguch.com. IN TXT "v=spf1 -all"参考URL:Sender ID:送信者側の設定作業 - @IT
Radish(POP3サーバー)のパスワード変更実験用のPerlスクリプトを紹介します。
4.4項の「SMTP/POP3サーバの設定ダイヤログ」の「POP3サーバー」タブのバインドアドレス欄に自己診断用IPアドレス(127.0.0.1)を追加し、認証失敗時のタイムアウト時間(初期値:30秒)を1秒に設定変更します。
下記のPerlスクリプトをPOP3サーバー機に設置して、Perlスクリプトの「■□■ POP3サーバへの設定 ■□■」を済ませて、POP3サーバー機のコマンドプロンプト画面より、「perl POPpassChg.pl」と起動すれば、ユーザーが「webmaster」で、そのパスワードが「ABcd01234#」の場合に新パスワードを「EFgh56789$」に変更することが出来ます。
自己診断用IPアドレスを使用しますので、サーバー機にウィルス駆除ソフトのAVGなどが入っている場合でも、POP3 Proxy Serverが介在しません。従って、Radish独自のパスワードの変更コマンド(CHPS)がPOP3 Proxy Server等に邪魔されずに使用できます。
#!D:/Perl/bin/perl.exe # RadishのPOP3サーバーのパスワード変更実験用Perlスクリプト(IO::Socketモジュール使用例) # POPpassChg.pl 2005.10.23 作成:鷹の巣 http://sakaguch.com/ # このスクリプトをコマンドプロンプト画面より、 # perl POPpassChg.pl use strict; use IO::Socket; # IO::Socketモジュールを使用 #■□■ POP3サーバへの設定 ■□■ my $username='webmaster'; my $password='ABcd01234#'; my $new_password='EFgh56789$'; # サーバーへの接続待ち許容時間(秒) my $timeout = 30; #■□■ POP3サーバへの設定終わり ■□■ #POP3サーバ名を設定する my $PopServer = '127.0.0.1'; # perlで、POP3サーバーのユーザーパスワードを変更 &main(); exit; sub main { my $mes_error = &changePOPpassward($PopServer, $username, $password, $new_password, $timeout); print "$mes_error\n"; } sub changePOPpassward { # 引数0:ホスト名、引数1:ユーザー名、引数2:パスワード、引数3:新パスワード、引数4:接続待ち許容時間(秒) my ($host, $username, $password, $new_password, $timeout) = @_; # POP3プロトコルgetservbyname('pop3','tcp')は110。 my $port = 110; if ($host eq "") {$host = 'localhost';} # 戻り値を初期化。 my $mes_err = ""; my $SOCKET = IO::Socket::INET -> new (PeerAddr => $host, # POP3プロトコルでサーバーへ接続する PeerPort => $port, # サービスポート番号 Proto => "tcp", # プロトコル(通信手順) Timeout => $timeout, # 接続待ち許容時間(秒) ); # POP3接続応答内容を破棄 my $dummy = <$SOCKET>; if ($SOCKET) { # ログインユーザー名の送信 $mes_err = &socket_command($SOCKET,"USER $username"); # ログインパスワードの送信 $mes_err = &socket_command($SOCKET,"PASS $password"); if ( $mes_err eq "" ) { # Radish POP3独自変更パスワードの送信 $mes_err = &socket_command($SOCKET,"CHPS $new_password"); if ( $mes_err eq "" ) { $mes_err = "パスワードが正常に変更できました。"; } else { $mes_err = "パスワードが変更できませんでした。\n\nPOP3応答:$mes_err"; } } else { $mes_err = "ユーザー名又はパスワードが違います。\n\nPOP3応答:$mes_err"; } # ログオフの送信 &socket_command($SOCKET,"QUIT"); # FTPサーバーから切断する $SOCKET -> close(); } else { $mes_err = "$hostのポート$portに接続できません。"; } return $mes_err; # 戻り値を格納する。 } sub socket_command { my ($socket,$command) = @_; # コマンドの送信 print $socket "$command\n"; # バッファに溜まっているデータも送る $socket -> flush(); # 応答内容を読み取る my $responce = <$socket>; # 行末の改行コードを削除 chomp ( $responce ); if ($responce =~ /OK/i){ return ""; } else { return $responce; } }
注)上記のスクリプトは、実験用で、LAN内のプライベートアドレスからしかパスワード変更できない様なアクセス制限はありませんので、
ご使用時には注意して下さい。
7.1のPerlスクリプトにCGIを実装し、Webサーバー経由でパスワード変更を行う様にしたものが、
ダウンロード ⇒ Windows用メールサーバーRadish(POP3サーバー)のパスワード変更CGI
です。このCGIは、LAN内のプライベートアドレスからしかアクセスできないように制限しています。
WebサーバーのCGIから、自己診断用IPアドレスを使用して、POP3サーバーに接続しますので、サーバー機にウィルス駆除ソフトのAVGなどが入っている場合でも、POP3 Proxy Serverが介在しません。従って、Radish独自のパスワードの変更コマンド(CHPS)がPOP3 Proxy Server等に邪魔されずに使用できます。
設置例
Webサーバーのバーチャルホスト機能を使用して、公開Webページとは、別の実行パスの
http://192.168.0.2/cgi-bin/POPpassChg (192.168.0.2:POP3サーバー機のプライベートアドレス)
に同梱のファイルを一式設置します。
アクセス方法
LAN内のブラウザより
http://192.168.0.2/cgi-bin/POPpassChg/POPpassChg.html
でアクセスして、パスワード変更入力ページにアクセスする。
アクセスには、プライベートアドレスを使用しないとアクセス出来ないようにします。
注意事項
謝辞
このCGIを作成するのにあたって、以下のURLを参考にして勉強し、このCGIを作成しました。
メールクライアントのメールアドレスの設定が終りましたら、手順Cのサービスポートの確認で25番ポートが開放されていることを確認し、手順Fのメールサーバー動作の確認を行って下さい。
4.3節のSMTPサーバの設定のバインドアドレス欄に「INADDR_ANY」(全てのIPアドレス)と設定すると、Radishは、インターネット上の全てのSMTPサーバーからメールの受信(中継)を行うことが出来る様になります。従って第三者から、Radishを不正に使用されない様、Radishの実運用稼動前に必ず不正中継確認テストを実施する必要があります。
不正中継確認テストでは、主に4.3節のSMTPサーバの設定の中継許可の許可リスト欄を検査することになります。そのためにも不正中継確認テスト時には、以下の仮設定を行っておくことをお奨めします。
メールの不正中継試験が正常に終了しましたら、仮設定を元に戻して再度、不正中継試験を実施して下さい。Radishが実運用稼動に入っても設定を変更したり、バージョンアップした場合は、必ず不正中継試験を必ず実施して下さい。ご健闘を祈ります。