はじめに
Ubuntu 16.04でPostfix 3.0+Dovecot 2.2+Dovecot SASLでのメールサーバ構築メモです。 PostfixではSMTPsを、DovecotではIMAPs , POP3sを有効にします。
構築手順
環境
OS | Ubuntu 16.04 LTS(4.4.0-21-generic) |
---|---|
SMTPソフトウェア | Postfix Version 3.1.0-3 |
POP/IMAPソフト | dovecot (dovecot-imapd,dovecot-pop3d) Version 2.2.22 |
事前準備
必要パッケージのインストール
Postfixとdovecot関連のパッケージをインストールします。
$ sudo apt-get install postfix dovecot-core dovecot-imapd dovecot-pop3d
Postfixの設定
/etc/postfix/main.cf
を作成します。
Ubuntu 16.04 LTSのPostfix 3.0では/usr/share/postfix/main.cf.dist
にサンプルファイルがあるのでそれを元にしても良いですし、新規に作成しても良いです。
### Postfixの互換レベル設定 compatibility_level = 2 ### 基本設定 command_directory = /usr/sbin daemon_directory = /usr/lib/postfix/sbin data_directory = /var/lib/postfix myhostname = ホスト名 mydomain = メールサーバのドメイン名 myorigin = $mydomain unknown_local_recipient_reject_code = 550 mynetworks_style = host, localhost mynetworks = xxx.xxx.xxx.xxx/32, localhost, 127.0.0.0/8 relay_domains = $mydestination smtpd_banner = $myhostname ESMTP unknown debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 inet_protocols = ipv4 ### 受信も必要な場合は以下を設定。 ### mydestinationは最終配送先の設定で、メールアドレスの「@」の右側が mydestination の指定に一致すると、そのメールは他のサーバには配送せず、自ホスト内で処理しようとする。 ### 末尾のほうにあるvirtual_mailbox_domainsを設定している場合には、mydestinationも設定していると受信時にエラーが発生するのでここでは空の値を設定。 ### virtual_mailbox_domainsがない場合は$myhostname, $mydomain, localhostあたりを設定しておけば良いはず。 inet_interfaces = all mydestination = #mydestination = $myhostname, $mydomain, localhost ### 証明書設定(ここではUbuntu標準のものを指定、必要であれば別途作成) smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ### アクセス制御等 smtpd_helo_required = yes smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtpd_client_restrictions = permit_mynetworks,reject_invalid_hostname,permit smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname smtpd_recipient_limit = 100 smtpd_helo_required = yes disable_vrfy_command = yes strict_rfc821_envelopes = yes allow_percent_hack = yes swap_bangpath = yes allow_untrusted_routing = no disable_vrfy_command = yes alias_maps = hash:/etc/aliases ### sasl関連設定 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname ### 送受信用仮想ドメイン/仮想ユーザの設定 virtual_mailbox_domains = ドメイン名 virtual_mailbox_base = /home/vmail virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_uid_maps = static:15000 virtual_gid_maps = static:15000
/etc/postfix/master.cf
を編集します。
以下4行をコメントアウト(※2017/6/27コメント指摘事項修正) アンコメントします。
submission inet n - y - - smtpd -o smtpd_sasl_auth_enable=yes smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes
Dovecotの設定
/etc/dovecot/dovecot.conf
を編集します。
### IPv4のみ有効化 listen = * ### インクルードするファイルの指定 !include conf.d/*.conf !include_try local.conf !include_try /usr/share/dovecot/protocols.d/*.protocol
/etc/dovecot/conf.d/10-master.conf
を編集します。
service imap-login { inet_listener imap { ### imap無効化 port = 0 } inet_listener imaps { ### imaps有効化 port = 993 ssl = yes } service pop3-login { inet_listener pop3 { ### pop3無効化 port = 0 } inet_listener pop3s { ### pop3s有効化 port = 995 ssl = yes } } unix_listener /var/spool/postfix/private/auth { mode = 0666 ### private/authの権限をpostfixへ変更 user = postfix group = postfix }
/etc/dovecot/conf.d/10-auth.conf
を編集します。
### PlainText認証を無効化 disable_plaintext_auth = yes ### 認証メカニズムに cram-md5 を利用可能にします。 auth_mechanisms = plain login digest-md5 ### auth-system.conf.extファイルのインクルードを停止 #!include auth-system.conf.ext ### auth-static.conf.extファイルのインクルードを有効化 !include auth-static.conf.ext
/etc/dovecot/conf.d/10-mail.conf
を編集します。
### メールの配置先指定 mail_location = maildir:/home/vmail/%d/%n/Maildir namespace inbox { inbox = yes } ### メールプロセスのchroot先指定 valid_chroot_dirs = /home/vmail/%d/ ### UIDLフォーマット指定 pop3_uidl_format = %08Xu%08Xv
/etc/dovecot/conf.d/10-ssl.conf
を編集します。
### sslを有効化 ssl = yes ### 証明書設定(ここではUbuntu標準のものを指定、必要であれば別途作成) ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
/etc/dovecot/conf.d/auth-static.conf.ext
を編集します。
passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/users } userdb { driver = static args = uid=vmail gid=vmail home=/home/vmail/%d/%n }
バーチャルメールボックスとメールユーザの設定
Postfixのバーチャルメールボックス設定
バーチャルメールボックスを使うことにします。ユーザ管理はOSユーザアカウントではなく、仮想ユーザで管理されます。
バーチャルメールボックスの所有者となるユーザ・グループを作成します。
ここではuid/gid
が15000
の、vmail
というユーザ・グループを作成します。
$ sudo groupadd -g 15000 vmail $ sudo useradd -u 15000 -g vmail -s /bin/false -d /home/vmail -m vmail
メールの送受信に使う仮想ユーザとメールボックスのマッピングを /etc/postfix/vmailbox
に記載します。
$ sudo vi /etc/postfix/vmailbox
書式は以下のような形です。
ユーザ名@ドメイン名 ユーザ名/Maildir/
記載したらpostmap
を実行してDBを生成します。
$ sudo postmap /etc/postfix/vmailbox
ファイルができていることを確認します。
$ ls /etc/postfix/vmailbox* /etc/postfix/vmailbox /etc/postfix/vmailbox.db
imap/pop3認証ユーザ設定
Dovecotでのimap/pop3認証用のユーザとパスワードのマッピングファイルを作成します。
まず、doveadm
でパスワードを生成します。
$ sudo doveadm pw Enter new password: Retype new password: {CRAM-MD5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
生成されたパスワードをユーザ名とともに/etc/dovecot/users
ファイルに記載します。
$ sudo vi /etc/dovecot/users
書式は以下のような形です。
ユーザ名:{CRAM-MD5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
おわりに
以上、Postfix3.0+Dovecot2.2でのメールサーバ構築の簡単なメモでした。
参考
- Postfix Basic Configuration
- Postfix Configuration Parameters
- Postfix バーチャルドメインホスティング Howto
- MailLocation - Dovecot Wiki
- SSL/DovecotConfiguration - Dovecot Wiki
- Authentication/Mechanisms - Dovecot Wiki
- Postfix で Submission ポート設定 (OP25B対策) - maruko2 Note.
- Postfix + Dovecot でSMTP Auth (Dovecot SASL) のメール環境構築 | グーフー WordPressのためのLinuxノート
- PostfixとDovecotでバーチャルメールボックスの設定をする - Qiita