メールサーバの構築_Maildir形式への移行

設定する内容

SuitePROの仮想専用サーバで使用しているFedora Core 3では標準のメールスプールファイル(届いたメールを蓄積するファイル)の形式がmbox形式になっています。 mbox形式では1つのアカウントにつき1つのメールスプールファイルが /var/spool/mail ディレクトリ内に作られますが、 SuitePROにインストールされているPOP3サーバープログラム「Dovecot 0.99」でmbox形式のメールスプールを使っている場合、 届いたメールの内容によっては稀にメールの受信が出来なくなってしまうというケースが報告されております。

この現象を回避するため、このページではMaildir形式のメールスプールに移行する手順をご案内しております。 Maildir形式は1つのメールにつき1つのメールスプールファイルを作成する方式で、一般的にmbox形式に比べ安全性が高いとされる方式です。

なお、コントロールパネルの簡易サーバ設定ではMaildir形式への移行は行われません。 Maildir形式への移行をご希望のお客様は下記の手順で設定変更を行ってご利用ください。

PostfixのMaildir設定手順

届いたメールをMaildir形式のメールスプールに配送するため、はじめにPostfixの設定変更を行います。 メールの取りこぼしを防ぐため、すでにmbox形式でメールをご利用のお客様は必ずDovecotより先にPostfixの設定変更を行ってください。

  1. サーバーにSSHで接続し、rootアカウントを使用してログインします。
  2. 以下のコマンドを実行し、動作しているPostfixを停止させてください。
    [root@localhost ~]# service postfix stop
    このコマンドを実行した時点で、仮想専用サーバのメール送信・配送が停止状態となります。 停止中は仮想専用サーバを使ったメールの送信はできなくなります。
    停止中に配送されて来たメールはほとんどの場合配送元のメールサーバが時間をおいて再送しますが、 配送元のメールサーバの仕様によっては送信者にエラーメールとなって返送される場合もございます。
    こちらの作業はできるだけメールをご利用にならない時に実施されることをお勧め致します。
  3. 以下のコマンドを実行し、現在のメールスプール容量を確認してください。
    [root@localhost ~]# ls -la /var/spool/mail
    合計 0
    -rw-------  1 user1  mail    0  1月  2 01:23 user1
    -rw-------  1 user2  mail 1024  2月  3 12:34 user2
    -rw-------  1 user3  mail 2048  3月  4 23:45 user3
     ・
     ・
     ・

    上の例のうち緑色で表示されている部分がメールスプールファイルの容量です。 この例の場合、ユーザアカウント「user1」はメールスプール容量が0バイトなのでこのアカウントのメールはありません。 ユーザアカウント「user2」および「user3」のメールスプール容量はそれぞれ1024バイト・2048バイトとなっていますので メールスプールにメールのデータが残されています。

    受信済みのメールをサーバに残している場合もございますが、 Maildir形式に移行すると /var/spool/mail ディレクトリ内のメールデータは受信出来なくなりますので この時点でメールスプールにデータが残っているアカウントはメールの受信を行っておいてください。

  4. viなどのテキストエディタで /etc/postfix/main.cf ファイルを開いて下さい。
    viで /etc/postfix/main.cf ファイルを開くコマンドは以下の通りです。
    [root@localhost ~]# vi /etc/postfix/main.cf

    main.cfファイルにある「DELIVERY TO MAILBOX」の項目で、「#home_mailbox = Maildir/」行の行頭にある「#」を外してこの行を有効にしてください。

    
    # DELIVERY TO MAILBOX
    #
    # The home_mailbox parameter specifies the optional pathname of a
    # mailbox file relative to a user's home directory. The default
    # mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
    # "Maildir/" for qmail-style delivery (the / is required).
    #
    #home_mailbox = Mailbox
    home_mailbox = Maildir/   (←行頭にある # を削除)
    
    

    書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。
  5. 以下のコマンドを実行し、Postfixを起動させてください。
    [root@localhost ~]# service postfix start
    
  6. 作成されているユーザアカウント宛てにテストメールを送信し、そのアカウントのホームディレクトリに「Maildir」ディレクトリが作成されることを確認してください。

DovecotのMaildir設定手順

Postfixの設定変更が終わった後に、Maildir形式のメールスプールからメールを受信するためにDovecotの設定を変更します。

  1. サーバーにSSHで接続し、rootアカウントを使用してログインします。
  2. viなどのテキストエディタで /etc/dovecot.conf ファイルを開いて下さい。
    viで /etc/dovecot.conf ファイルを開くコマンドは以下の通りです。
    [root@localhost ~]# vi /etc/dovecot.conf

    dovecot.confファイルにある「Default MAIL environment」の項目で、「#default_mail_env =」行の行頭にある「#」を外し、「=」の右に「maildir:%h/Maildir」を記述してください。
    # Default MAIL environment to use when it's not set. By leaving this empty
    # dovecot tries to do some automatic detection as described in
    # doc/mail-storages.txt. There's a few special variables you can use:
    #
    #   %u - username
    #   %n - user part in user@domain, same as %u if there's no domain
    #   %d - domain part in user@domain, empty if user there's no domain
    #   %h - home directory
    #
    # You can also limit a width of string by giving the number of max. characters
    # after the '%' character. For example %1u gives the first character of
    # username. Some examples:
    #
    #   default_mail_env = maildir:/var/mail/%1u/%u/Maildir
    #   default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u
    #   default_mail_env = mbox:/var/mail/%d/%n/:INDEX=/var/indexes/%d/%n
    #
    default_mail_env = maildir:%h/Maildir
    

    書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。
  3. 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
    [root@localhost ~]# service dovecot reload
  4. Postfixの設定終了後にテストメールを送信したユーザアカウントのメールをメールソフトで受信し、 Maildir形式のメールスプールに届いたメールが受信できることを確認してください。