メールサーバ(Postfix + courier-imap)

メニュー

  1. はじめに
  2. Postfixのインストール
  3. 最初の設定
  4. 外部受信のための設定
  5. courier-imapのインストールとセッティング
  6. ルータの設定
  7. fetchmailの導入と設定
  8. mewの設定

はじめに

結構ハマったので、メールサーバ、というより Postfix を設定する際に注意すべき点 をあげておく
  1. 順序を守れ
    設定の順序を間違えるとローカルテストすらいかなくなる
  2. インストールは"apt-get (install)"、アンインストールは"aptitude (purge)"
    aptitude でインストールするとハマる。 意味もまだよく掴めていないのに、余計なものが芋づる式に導入されるからだ。 インストールは apt-get でやるほうがよい。 一方、アンインストールの場合、依存関係をよく監視している aptitude は 有効なので、apt-get と aptitude は上手く使い分けた方がよいことが 今回分かった。
以上。
index

Postfixのインストール

2005年8月現在の話。
Postfix (Debian testing) のバージョンは 2.2.14 。

数ステップの質問がされるが、注意すべきは2点。 [1], [2], [3], [4], [5]

  1. まず「設定の一般的なタイプ(サーバの種類)」であるが、 一般的には「インターネットサイト」を選択するところ、 ローカルでのテストを十分にしないと後々、とても面倒なことになるので、 ここでは「ローカルのみ」を選択すること。
    [2]
  2. 次に「rootへのメールをどこへ送りますか?」だが、デフォルトでは”NONE”となっている。 ここはそのままにしない。/etc/aliases にはすぐ後に手動で追加するからだ。 よってここでは”NONE”を消してやる。
    [3]
以上2点のみいじり、後はデフォルトでよい。

もしこけても

で再設定が可能。

exim4 は自動的に排除してくれる。

index

最初の設定

  1. aliasesの設定 インストールして、すぐさま Postfix の設定ファイルである "/etc/postfix/main.cf"をいじらないこと。

    まずは alias を設定しておく。
    Debian の場合、/etc/aliases が alias 設定の場所だ。 次の二つがあればオッケ。


    debian では後者はすでに用意されていたので、前者のみ追加した。
    追加したら を忘れずに。

    その後、念を入れて一度再起動した。

    index
  2. Maildirディレクトリを掘る 続いて メール受信ユーザに手動で Maildir ディレクトリを掘る。 これは Postfix を設定してからでは、Postfix がどこに配信したらよいか 分からなくなるだろう…と思われるからである。

    自分のホームディレクトリで、Maildir形式のディレクトリを掘り、
    パーミションを忘れずに 700 番にしておく。

    
    	~$ mkdir -p Maildir/cur
    	~$ mkdir -p Maildir/tmp
    	~$ mkdir -p Maildir/new
    	~$ chmod -R 700 Maildir
    
    	

    [6]
    index
  3. main.cf の設定1 続いて postfix を司る main.cf の設定に入る。
    が、ここでも一気にすべてを設定しない。

    まずはローカルホストできちんと Postfix がメール配信をするか テストをしなければならない。

    最初の設定で行うのは Maildir形式で Postfix が正常に動作するか、 ただそれだけである。

    そのために main.cf に加える設定は

    のみである。

    これを /etc/postfix/main.cf の最終行に書く。

    [7]

    ここまできたら、一度 Postfix をリセットする。
    [8]

    
    # postfix reload
    # /etc/ini.d/postfix restart
    
    
    index
  4. ローカル配信テスト 第1回目 ここで最初のローカルホスト配信のテストを行っておく。
    [8]
    テストは root と 自分のアカウント と2回行っておく。
    コンソールからのメール発信の方法は次の通り。
    
    (自分のアカウントからの発信の場合)
    $ whoami
    hjk
    $ mail hjk
    Subject: test1
    This is a test mail.(本文)
    . (<= "."でメール終了の合図)
    Cc:[RET](ここは何も書かずに Enter)
    
    

    うまく配信されていれば、自分のホームディレクトリ中の "~/Maildir/new/" のなかに メールが届けられているはずだ。

    最後に、ここまでがうまくいったら main.cf のバックアップをとっておく。 続いての設定は自分のドメインからの受信を試みる。

    
    # cp /etc/postfix/main.cf /etc/postfix/main.cf.origin
    
    
    index

外部受信のための設定

メールサーバを構築する前に、正しくドメインが解決されるために 以下の準備が必要。
  1. /etc/hosts
    これは IPアドレスとホスト名の対応表(自ホスト名を含む)。
    「IPアドレス,FQDN(正式なホスト名),エイリアス」をタブもしくは空白で埋めていけばよい
    
    #127.0.0.1      localhost.localdomain   localhost       localhost
    127.0.0.1       localhost
    #192.168.x.xxx  kreisel.fam.cx          imap.kreisel.fam.cx
    192.168.x.xxx   imap.kreisel.fam.cx     imap
    
    
    index
  2. /etc/hostname
    自分のホスト名。
    DDNSできちんと導かれるように
    
    #aptiva
    imap.kreisel.fam.cx
    
    
    FQDNを書いておく。
    index
  3. /etc/network/interfaces
    本来なら、きちんと 固定IPアドレスの設定で書くべきだが、 自宅のルータは固定DHCPサーバ(?)という設定になっており、 サーバ側では DHCP 設定でなければ IP を取得できなかった。
    したがって、ここには現在の特別な設定は何もしていない (念のため、static な設定もコメントアウトして書いてある)
    
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    
    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    
    #iface eth0 inet static
    #       address 192.168.1.xxx
    #       network 192.168.1.0
    #       netmask 255.255.255.0
    #       broadcat 192.168.1.255
    #       gateway 192.168.1.1
    
    
    index

    ネットワークの設定の根幹部分を変更したので、最後にサーバそのものを再起動(reboot)しておく。
    # reboot

  4. main.cf の設定2

    外部受信可能な状態に postfix の main.cf に変更を加えていく。 さきほどと同じ /etc/postfix/main.cf
    あまり長くはないので、全文

    注意点をあげるとすれば…

    終了したら、
    # postfix reload
    # /etc/init.d/postfix restart
    する。
    index
  5. ここまでの注意点
    外部受信に際して、もっともポイントとなるのは すべて同じ名前(FQDN)を用いることだ。
    index
  6. ローカル配信テスト 第2回目

    ここで、ローカル配信テスト 第1回目 と同様に、セッティングが決まっているかを確認するため、ローカル配信を試みる。

    うまく配信されていれば、システムに再起動をかける。
    # reboot

    これで一応、Postfix 側の設定は終了。

index

courier-imapのインストールとセッティング

courier-imap のインストールは簡単。
しかも、インストール後にすることは何もない。 一つだけ質問されるが、 webで設定するつもりはないので、デフォルトでよい。
これで courier-imap が動作していることになる。
ローカル配信(3回め)をして確認をしておく。
方法はこれまでと同じ
index

ルータの設定

ルータの設定をする。

imap が使うポートは「143番」だ。
ルータで 143番を開けてやる。

そこまで終わったら、念のためサーバ側を一度再起動してやる
# reboot

index
これで、外部からの送受信が可能か、最終チェックに入る。

ローカル配信テスト 第4回目は これまでと配信方法は同じ(root,自分のアカウントからの配信)だが、 ルータが正しく、IP/名前解決をし、Postfixが正しく配信し、courier-imapが正しく動作しているか をチェックするため、 サーバ側で受信するのではなく、クライアントマシンからの受信が加わる。

具体的には

  1. root, 自分のアカウント(hjk) から mail コマンドで これまでどおりメールを送る。
  2. サーバ側で、$~/Maildir/new/ 以下にメールが届いているかチェックする。
  3. windowsPC に imap対応メーラ(Mozilla Thunderbird)をインストールして、 ルータで設定した、今回のメールサーバの IP(192.168.x.xxx) と アカウント@ホスト名(hjk@moge.fam.cx) で設定を作り、受信してみる。

これで Thunderbird でこれまでのテストメールが見れれば、 ルータ、Postfix、courier-imap がすべてきちんと動作していることになる。

index

fetchmailの導入と設定

複数のメールアカウントを一括して取得してくれる fetchmail を導入し、 imap で一元管理する最終段階に入る。

導入は courier-imap 同様簡単だ。

index

fetchmailの設定は 次のように行う。

  1. $ touch ~/.fetchmailrc (自分のホームディレクトリに".fetchmailrc"ファイルを作る)
  2. $ vi .fetchmailrc (".fetchmailrc"を書く)
    
    set daemon 30 
    set postmaster root
    set no bouncemail
    
    defaults
            protocol auto
            no mimedecode
            smtphost localhost
    
    poll [mail.server1]
            uidl (<= メールサーバにメールを残すため)
            protocol pop3
            user hogehoge
            password xxxxxxx
            keep (<= メールサーバにメールを残すため)
    poll [mail.server2]
            protocol apop
            user mogemoge
            password xxxxx
    
    
  3. $ chmod 600 .fetchmailrc
.fetchmailrc にはメール受信のためのパスワードが書かれているので、3.でのパーミション変更は必須。
index

ここまでが終了したら最終 受信テストを行う。
再起動後、ローカルユーザアカウントから fetchmail と打ち、 ローカル配信テスト 第4回目で導入した Thunderbirdから自分のメールサーバアカウントから受信してみる。
うまくいけば、.fetchmailrcで設定したメールアカウントに届けられたメールが Thunderbirdから読めるようになるはずだ。

# reboot
$ fetchmail
(windowsに移りThunderbirdからメールを取得する)

index

メールが無事受信できるようになったら、fetchmail で定期的にプロバイダのメールボックスから 取得してくるよう、 cronによる自動取得設定を行う。

cron を設定するには、ユーザアカウントから

し、設定する。
crontab の詳細

現在の crontab は以下のようになっている。


MAILTO=""
*/5 * * * * /usr/bin/fetchmail

"MAILTO=" は、fetchmailが動作する度(5分)に送られてくるログを 自分のメールボックスに送らせないようにする設定。
index
導入がすんだら、 メール専用のユーザを作る。
これも courier-imap 導入後は次のようにする

  1. ユーザ作成前に、自動的にユーザディレクトリに ~/Maildir ができるよう、 courier-imap についてくる maildirmake コマンドを使って、 /etc/skel に次の設定をしておく
  2. メール受信専用のユーザを作る
    今回は useradd ではなく、adduser を使ってみた su hoge でログインしてみると、~/Maildir ができている。