• teruchiです。

    サービス開発中に、メール送信のテストをしたいけど、
    外には送信したくない、もしくは送信できない場合、
    ローカルにメールサーバーを構築しちゃいます。

    DovecotとPostfixが扱いやすいのでこの2つを選びます。

    まずはportsを更新しておきましょう。

    $ sudo port selfupdate
    

    ではDovecotから。

    $ sudo port install dovecot2
    

    ビルド終了時に

    Configuration files go to this directory. See example configuration files in
    /opt/local/share/doc/dovecot/example-config/
    

    って書いてあるので、該当ディレクトリにあるファイルをいくつかコピー

    $ sudo cp /opt/local/share/doc/dovecot/example-config/dovecot.conf /opt/local/etc/dovecot
    $ sudo cp /opt/local/share/doc/dovecot/example-config/conf.d /opt/local/etc/dovecot
    

    conf.dには各種インクルードファイルがおいてあるのでそのままコピーしておくといいです。

    Dovecotを設定しましょう

    $ sudo vi dovecot.conf
    
    protocols = imap
    
    #!include conf.d/*.conf
    !include conf.d/10-master.conf
    !include conf.d/10-auth.conf
    
    #!include_try local.conf
    
    ssl = no
    
    mail_location = maildir:~/Maildir
    

    プロトコルはimapだけでいいと思います。
    10-master.confには基本動作に必要な設定が書かれているのでインクルード。
    10-auth.confではプレーンテキストでのログインとauth-system.conf.extがインクルードされているので必要。
    sslの設定は面倒なので利用不可にしてしまいます。

    重要なのがauth-system.conf.extの設定です。

    passdb {
    driver = pam
    # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=]
    # [cache_key=] []
    #args = dovecot
    args = login
    }
    

    pamの設定ですがデフォルトではdovecot用に設定を用意しなければいけないので、
    「args = login」としてmacの認証(表現は正しくないけど)を利用するようにします。

    では起動しましょう。

    $ sudo port load dovecot2
    

    最近のMacPortsは「port load」でlaunchctlのloadとstartまでやってくれます。

    これでひとまずimap接続が出来るようになりました。

    次にPostfixをいれます。
    標準でPostfixが入っていますが、
    開発環境用にはMacPortsのものを使いたいので新たに入れます。

    $ sudo port install postfix
    

    aliasデータベースが作られてないようなので

    $ cd /opt/local/etc/potfix
    $ sudo newaliases
    

    dovecotに合わせて

    $ sudo vi /opt/local/etc/potfix/main.cf
    
    home_mailbox = Maildir/
    

    さて、ここがポイント。
    このまま起動してもPHPなどから呼び出される/usr/sbin/sendmailコマンドは
    標準でインストールされているPostfixのものが使われてしまいます。
    そうすると、sendmailコマンドを使った時だけMaildir形式じゃない状態になったりと、
    おかしな動きになります。

    置き換えてしまいましょう。

    $ sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.org
    $ sudo ln -s /opt/local/sbin/sendmail /usr/sbin/sendmail
    

    Linuxディストリだと設定ファイルで切替ができるのにMacPortsは/opt配下だけに
    対象を限定するのが基本だからでしょうかね。

    では起動

    $ sudo port load postfix
    

    出来上がり。

    うまく動かないときは/var/log/maillogを見るとわかるかもしれません。

    検証環境
    Mac OS X 10.7.1 (Lion)
    MacPorts 2.0.3
    dovecot 2.0.13
    postfix 2.8.5

    Top