Postfix+Dovecot/導入手順

提供: Software Development Memo
移動先: 案内検索

本ページでは、MTAソフトウェアである「Postfix」の導入手順を記述します。

環境

  • MTA : Postfix 2.5.6
  • POP3 : Dovecot 1.1.10

外部リレーの場合、SMTP認証を実施する。認証データはUNIXアカウントと分離します。

インストール

Postfix

入手先 : http://www.postfix.org/

$ tar zxvf postfix-2.5.6.tar.gz
$ cd postfix-2.5.6
$ make tidy
$ make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\"'
$ make
# adduser postfix
# groupadd postdrop
# make install
# newaliases

Dovecot

入手先 : http://www.dovecot.org/

$ tar zxvf dovecot-1.1.10.tar.gz
$ cd dovecot-1.1.10
$ ./configure
$ make
# adduser dovecot
# make install

設定

Postfix

以下、下記の条件を満たす設定を行います。

  • 外部リレーの場合、SMTP認証を実施する
  • ドメイン「example.com」「example.org」を所持
  • 「example.org」宛のメールは「example.com」に転送
  • 「example.com」のメールボックスはUNIXアカウントディレクトリではなく、バーチャルドメイン用のディレクトリに保存


「/etc/postfix/main.cf」に下記を追加します。

home_mailbox = Maildir/
mynetworks = 127.0.0.1
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth-dovecot
virtual_alias_domains = example.org
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_domains = example.com
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

「/etc/postfix/virtual」に下記を追加します。

user@example.org user@example.com

「/etc/postfix/virtual.db」ファイルを生成するために下記コマンドを実行します。

# postmap /etc/postfix/virtual

「/etc/postfix/vmailbox」に下記を追加する。

user@example.com example.com/user/

ディレクトリの末尾に「/」を入れない場合は、mbox形式で保存します。

「/etc/postfix/vmailbox.db」ファイルを生成するために下記コマンドを実行します。

# postmap /etc/postfix/vmailbox

バーチャルドメイン用ディレクトリを作成します。

# mkdir -p /var/spool/mail/vhosts
# chown 5000.5000 /var/spool/mail/vhosts

Dovecot

「/usr/local/etc」ディレクトリにある「dovecot-example.conf」を「dovecot.conf」にコピーする。コピー後、下記を追加・変更します。

protocols = pop3
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/spool/mail/vhosts/%d/%n

auth default {
  mechanisms = plain apop cram-md5

  passdb passwd-file {
    # File contains a list of usernames, one per line
    #args = /etc/dovecot.deny
    #deny = yes
    args = /etc/dovecot/passwd
  }
  userdb static {
    args = uid=5000 gid=5000 home=/var/spool/mail/vhosts/%d/%n
  }
   (中略)

  socket listen {
    client {
      path = /var/spool/postfix/private/auth-dovecot 
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

パスワードファイル「/etc/dovecot/passwd」を作成します。

<ユーザ名>:{PLAIN}<パスワード>

その他

Plain認証を試すには下記コマンドを使用します。

$ perl -MMIME::Base64 -e 'print encode_base64("\0username\0password");'

起動

# /usr/local/sbin/dovecot
# /usr/sbin/postfix start

トラブルシューティング

  • 「/var/log/maillog」関連
    • 「warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied」
      • 対策 : 「/etc/sasldb2」の所有者をpostfixにする

付録

SMTP認証の際、Dovecotではなく「cyrus-sasl」を使用する場合の導入手順を示します。

導入手順:Postfix+Dovecot/cyrus-sasl

参考

更新履歴

  • 2009/02/22
    • ページ作成