SSブログ

「我が家のメールサーバ」を建ててみよう~その1・とりあえずインストール~ [Linux(Mail)]

 どうも最近、「自宅でLinuxサーバを・・・」というネタから遠く離れている気がしてならないのだが。(笑)まあ、このblogは私のメモでもあるのでいいといえばいいのかもしれないか。。。(笑)

 てなわけで、久々(?)の「自宅でLinuxサーバ」を活用するネタ。今回はメールサーバ編。

 判っていると思うが、メールサーバは特に第三者中継等でスパムメールばら撒き拠点として悪用されるリスクもあるので、そのあたりしっかり意識しておくよーに。

 「メールサーバ」と一口で言っても、準備しなければならない点はWebサーバよりも多くて複雑だ。まずはメールの送信と受信で準備すべく項目は別々に存在するし、サーバからみた観点だけでなくネットワーク的にも一定量の知識が欠かせない。

メールを送信するための準備:
 ①当然、MTAを準備しなければならない
 ②DNSへの登録 (Aレコード、PTRレコード)
 ③プロバイダや接続環境によってはサブミッションポートやSMTP認証といった設定も必要
 ④第三者中継等が行われないことをしっかり確認する(こうした確認を行うサービスを提供しているサイトがあるのでこれを活用する)

メールを受信するための準備:
 ①当然、MTAを準備する。他にPOP3/IMAP4を処理するものも用意する
 ②DNSへの登録 (Aレコード、MXレコード)
 ③プロバイダや接続環境によってはサブミッションポートの設定も必要になることも
 ④自宅のルータについて、ポート開放・転送・フィルタリング等設定を行う

 まず、MTAなどを用意する。
 MTAとは、メールを転送してくれるエージェントのこと。sendmailとかqmailとかpostfixとかそういう連中で、プロトコルとして「SMTP」を用いる。
 「手紙を書いた人間が、郵便ポストに手紙を投函する」 → SMTP
 「郵便局員が郵便ポストから手紙を回収し、郵便局に送り届ける」 → SMTP
 「集荷した郵便局から、配送先を管轄する郵便局へ郵便物を転送する」 → SMTP
 「配送先を管轄する郵便局が、あて先の家の郵便受けまで手紙を送り届ける」 → SMTP

 と、ここまでがSMTPの範疇。
 しかしこれだけではメールがまだ読めない。「郵便受けから手紙を取り出す」動作が無いためである。
 この動作については SMTP ではなく、POP3またはIMAP4といった別のプロトコルが管轄しているので、これはMTAではなくさらに別のエージェントを使用する。有名どころとしてはqpoperとか、dovecotとかだろうか。

 極めて個人的な理由ながら、私はqmailが大嫌いなので、qmail以外の選択肢でなおかつラクチンポンで使えるものを探すと・・・
[root@asagi postfix]# yum search mta
Loaded plugins: fastestmirror
Determining fastest mirrors
 * addons: ftp.iij.ad.jp
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
addons                                                                                        |  951 B     00:00
base                                                                                          | 2.1 kB     00:00
base/primary_db                                                                               | 2.2 MB     00:00
extras                                                                                        | 2.1 kB     00:00
extras/primary_db                                                                             | 241 kB     00:00
updates                                                                                       | 1.9 kB     00:00
updates/primary_db                                                                            | 446 kB     00:00
=================================================== Matched: mta ====================================================
postfix.x86_64 : メール転送エージェント
postfix-pflogsumm.x86_64 : Postfix MTA 用ログサマライザ/アナライザ
exim.x86_64 : The exim mail transfer agent
exim-doc.noarch : Documentation for the exim mail transfer agent
sendmail.x86_64 : 広く普及しているメール転送エージェント (MTA)
sendmail-doc.x86_64 : Sendmail メール転送エージェントプログラムに関するドキュメント
(以下略)

 sendmailは設定で軽く死んでしまうのでpostfixをチョイス。(予定通り!w)
 pop3/imap4のエージェントについては
[root@asagi postfix]# yum search pop3
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: ftp.iij.ad.jp
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
=================================================== Matched: pop3 ===================================================
cyrus-imapd.x86_64 : A high-performance mail server with IMAP, POP3, NNTP and SIEVE support
dovecot.x86_64 : Dovecot Secure imap サーバー
fetchmail.x86_64 : A remote mail retrieval and forwarding utility
imp-h3.noarch : The Internet Messaging Program: webmail access to IMAP/POP3 accounts.
perl-Mail-POP3Client.noarch : POP3 client module for perl5

 cyrus-imapdかdovecotかだけど、ひとまずdovecotをチョイス。よって、これらのインストールとしては・・・
yum install postfix dovecot

 ・・・ということになるね!


 さて、メールサーバの構築としては概ね以下の手順になるかな
手順①:必要なエージェント類をインストールする
手順②:postfixの設定ファイルを適切に記述する(かならず!!)
手順③:dovecotの設定ファイルを適切に記述する(必要な場合のみ)
手順④:サービスの自動起動設定
手順⑤:ルータのポート開放・転送等の設定を導入する

 メールサーバとしてはここまでだが、メールの送受信にはDNSとの連携が欠かせない。
 固定されたIPアドレスをもっている場合はいざじらず、ごく一般的なネット接続サービスを利用している限りはインターネットに接続されるポイントのIPアドレスは固定されていないのが常なので、DDNSサービスを利用しなければならないことが一般的だろう。
 この場合に、DDNSを自動更新したりするギミックを用意する必要が生じる。DDNSの更新ツールとして有名かつ秀逸なものには、「DiCE」だろうか。残念ながらyumではインストールできないので、コレのLinux版をビルドしてインストールすることとなる。

そんな訳で、
手順⑥:適切なDDNSサービスに登録する
  ※重要:MXレコードへの登録に対応しているサービスを選択すること
  ※重要:さらに、DiCEに対応しているサービスを選択すること
手順⑦:DiCEをダウンロード・ビルド・インストール
手順⑧:DiCEを適切に設定する



 というわけで、postfixとdovecotはyumでインストール。DiCEについてはソースからビルドしてインストールということにする。

手順①:必要なエージェント類をインストールする

 すでに示したとおり、yum install postfix dovecotで終了。

手順②:postfixの設定ファイルを適切に記述する(かならず!!)

 インストールが終わったら、今度はpostfixの設定ファイルを編集する。
 重要なファイルとしては、
    /etc/postfix/master.cf
    /etc/postfix/main.cf
 の2個だが、ごく標準的なメールサーバの構築であれば、「/etc/postfix/main.cf」のみの編集で用は足りるはず。で、このファイルをviで開くと英語でコメントたっぷりに記述されていて、もう何から手を付けたらよいものか皆目検討もつかないのだが、重要で最低限必要な設定内容というと↓こんな具合。
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix

myhostname = asagi.myhome.ddns-service.com
mydomain = myhome.ddns-service.com
myorigin = $mydomain

mynetworks = 192.168.0.1/24 127.0.0.0/8
inet_interfaces = all

mydestination = $myhostname, $mydomain
unknown_local_recipient_reject_code = 550

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
home_mailbox = Maildir/
mailbox_delivery_lock = fcntl, dotlock

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no

 たったこれだけ。重要なポイントだけかいつまんで説明すると・・・

 「mail_owner = postfix」・・・postfixを動作させるLinuxユーザアカウント名。rootやnobodyは使用すべきではない。セキュリティホールのリスクを少しでも回避させるため。(完全には防げないけどな!)
 「myhostname = asagi.myhome.ddns-service.com」・・・メールサーバのホスト名。「asagi」は自由につけたサーバの名前。「myhome.ddns-service.com」はDDNSサービスを申し込んだ際に発行されるはずのドメイン名。DDNSサービスによって変わるので、適切な名称を記述するように。
 「mydomain = myhome.ddns-service.com」・・・このメールサーバが扱うべきメールのドメイン名。
 「myorigin = $mydomain」・・・このメールサーバから送信され、ドメイン名が明示されないメールに付与されるドメイン名。変数「mydomain」と同じですよ・・・ということを指定している。
 「mynetworks = 192.168.0.1/24 127.0.0.0/8」・・・このメールサーバから見て、『内側』のネットワークと見なされるネットワークアドレスの情報。『内側』のネットワークからは、自由にメールが送信できるが、これ以外(要するに『外側』)のネットワークからは、このメールサーバが管轄しているドメインにだけメールが送信できるという振る舞いになる。
 「mydestination = $myhostname, $mydomain」・・・そしてこれが、このメールサーバが管轄しているメールアドレスのドメイン。繰り返しになるが、『外側』のネットワークから送信時に指定できるドメイン名はここに書いてあるものだけになる。

 このように、「メールサーバの名前」「メールのドメイン名」「『内側』のネットワークアドレス」に関わる設定だけきちんとやっておけばよいということになる。

手順③:dovecotの設定ファイルを適切に記述する(必要な場合のみ)

 編集すべきファイルは、/etc/dovecot.confである。が、こちらは標準のままでも問題ない。もし気になるようであれば、「listen = 」の項目にアドレスを記述しておくとかそれくらいか?


 一端アーティクルを分ける。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。