0

POSTFIX メールサーバ構築 纏め

もうだいぶ前になりますが、
postfixを使ってメールサーバーを立てる機会があったので、その時の設定を纏めようと思います。

やりたかったことは大きく分けて以下の3つです。
・バーチャルドメイン、バーチャルメールボックス
・pop3メール受信
・SMTP認証

■バーチャルドメイン、バーチャルメールボックス
postfixのパッケージをインストールすると、メインとなる設定ファイルは/etc/postfix/main.cf です。
以下の設定ではメールのドメインは hachim.jp です。

myhostname = mail.hachim.jp
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
#relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.2 ...
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = hachim.jp, localhost, localhost.localdomain, localhost
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
myhostname: hachim.jp     ⇐自サーバーのホスト名を記載
mynetworks: xxx.xxx.xxx.xxx        ⇐メール送信元となる全サーバーのIPを追加
virtual_mailbox_domains: hachim.jp        ⇐メールアドレスで使うドメインを全部記述
virtual_mailbox_base: このディレクトリ内にドメインのディレクトリが作成され、その中に各ユーザーのメールディレクトリが作成されます
virtual_uid_maps, virtual_gid_maps: 今回は、メールファイルを触るユーザのユーザーID、グループIDを5000番に指定

5000番のユーザー、グループにはvhostsユーザー、グループを用意します。

useradd -u 5000 vhosts

■POP3メール受信
postfixをdovecotと組み合わせて使用します。(dovecotはバージョン1.1系)

/etc/dovecot/dovecot.conf
protocols = pop3 pop3s
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/var/spool/mail/vhosts/%d/%n
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = mail
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
auth default {
  mechanisms = plain cram-md5 apop
  passdb passwd-file {
    args = /etc/dovecot-passwd
  }
  user = root
}
auth_debug = yes

mail_location: postfixのvirtual_mailbox_base, /etc/postfix/vmailbox の記載と合わせる(%dはドメイン名、%nはユーザー名)
mail_uid, mail_gid: postfixの virtual_uid_maps, virtual_gid_maps と合わせる

パスワードの設定は /etc/dovecot-passwdに書きます。
support@hachim.jp:{CRAM-MD5}hogehoge…
CRAM-MD5は認証で使う方式で、{CRAM-MD5}の後ろのhogehoge…の部分は暗号化したパスワード文字列です。
この文字列は、以下のコマンドを実行してパスワードを入力すると出力されます。

dovecotpw -s CRAM-MD5
auth_debug = yes があるとログに詳細が出力されます。最初の受信確認ができるまで入れておくといいと思います。

■smtp認証
以下はSMTP認証もdovecotで行うための設定です。
postfixの /etc/postfix/main.cf に2行追加します。

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

dovecotの /etc/dovecot/dovecot.conf には、
auth default内に socket listen のブロックを追加します。

auth default {
  mechanisms = plain cram-md5 apop
  passdb passwd-file {
    args = /etc/dovecot-passwd
  }
  user = root
  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

ISPによっては、外部の25番ポートにアクセスできないようになっていることがあります。
(OP25B: Outboud Port 25 Blocking)
その場合の対応として、SMTP認証を通れば587番ポート(Submissionポート)を使ってメールを送信できるようにします。

/etc/postifx/master.cf
下記3行の先頭#を消して、設定を有効にします。

submission inet n       -       -       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

変更したら、postfixとdovecotをリロードします。

/etc/init.d/postfix reload
/etc/init.d/dovecot reload

…とここまで書いてきましたが、、、
最近のディストリビューションでインストールされるdovecotパッケージはバージョン2系になっており、
設定ファイルの書き方がけっこう変わっていました。。。

バージョン2系では、/etc/dovecot/conf.d 内に役割ごとの設定ファイルがいろいろあり、それを使って設定するようになっています。
単純にdovecot.confを置き換えても動かないので、dovecot2系で動作確認できたらまた追記しようと思います。。

■dovecot2系の設定ファイル
dovecot1から2にバージョンアップして、設定ファイルを直しました。
今回は、/etc/dovecot/conf.d 内の.confファイルをすべて読み込んでいたのをやめて、/etc/dovecot/conf.d/10-master.conf だけ読み込むようにしています。

protocols = pop3
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
ssl_cert =
ssl_key =
mail_location = maildir:/var/spool/mail/vhosts/%d/%n
mail_uid=5000
mail_gid=5000
mail_privileged_group = mail
mail_debug = yes
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
auth_mechanisms = cram-md5 apop plain
passdb {
  driver = passwd-file
  args = /etc/dovecot-passwd
}
!include /etc/dovecot/conf.d/10-master.conf
auth_verbose=yes
auth_debug=yes
auth_debug_passwords=yes
mail_debug = yes
auth_verbose=yes
auth_debug=yes

auth_debug_passwords=yesはデバッグ用です。

conf.d 内のファイルを読み込む設定は、もともと

!include /etc/dovecot/conf.d/*.conf

になっています。

/etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  user = root
}

dovecot1と2の主な変更点は以下の通りです。
・conf.d内の.confファイルの読み込み
・protocol のpop3 1つで、pop3とpop3sの両方OKに
・ssl_cert_file => ssl_cert, ssl_key_file => ssl_key
・auth default {…} => service auth {…}
・auth defualt内にあったpassdbが外に出て、passdb内にdriver設定追加
・auth default内にあったmechanismsが外に出てauth_mechanismsに
・socket listen … => unix_listener …

dovecotをリスタートした時のメッセージとログのデバッグ出力を見ると、
設定ファイルの修正箇所が見つけやすいと思います。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です