4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cento7.x postfix + dovecot 仮想ユーザーでの運用手順

Last updated at Posted at 2020-10-06

ドメインとDNSの設定

各サービスによるので一概に言えないが
freenomなどで無料ドメインを取得するか
各ドメインサービスよりドメインを取得する(例:black.jp)
ドメインが取れたらVPSなどのサーバのIPにDNS設定をする

digコマンドで設定したIPアドレスが引けていればOK

$ dig black.jp
(略)
; ANSWER SECTION:
black.jp.                300     IN      A       XXXX.XXX.XXX.XXX

ポートの開放

メールの送受信で使用されるポートを適宜解放する

サービス ポート 説明
smtp 25 送信。SMTPリレーに使用。暗号化なし
smtp-submission 587 送信。SMTPサブミッション用。TLS
smtps 465 送信。SMTPS(SMTP over SSL)
pop3 110 受信。POP3。暗号化なし
pop3s 995 受信。POP3 over SSL。暗号化あり
imap 143 受信。IMAP4。暗号化なし
imaps 993 受信。IMAP4S。暗号化あり
# firewall-cmd --add-service={imaps,pop3,smtp,smtps} --permanent
# firewall-cmd --reload

仮想ユーザー管理用のアカウント作成

通常のメールアドレスはOSのログインアカウントと紐づけているが
運用的にシステムのアカウントの増減が手間になるので
1つのダミーのアカウントを用意し、そのアカウント権限内で
メールアカウントを管理できるようにする。

ログイン不要のアカウント作成(例:アカウント名:vmail、uid:5000、gid:5000)

# groupadd -g 5000 vmail
# useradd -u 5000 -g vmail -s /sbin/nologin vmail

メールを受信するディレクトリを用意する

# mkdir /var/spool/virtual
# chown -R vmail:vmail /var/spool/virtual

Postfixのインストール

yumでパッケージインストール

# yum install postfix

編集するファイルはmain.cfmaster.cf
変更箇所のみを抜粋。

/etc/postfix/main.cf
myhostname = black.jp
mydomain = black.jp
# 外部からのアクセスを許可。IPアドレスで制限かけることも可能
inet_interfaces = all
# 仮想ユーザーの場合はブランクとするらしい
mydestination = 
# メールの保存方式をMaildir形式にする
home_mailbox = Maildir/
# バナーにメールソフトの情報を隠蔽する
smtpd_banner = $myhostname ESMTP unknown

#以下を追加。sasl authの設定
# sasl authを有効化
smtpd_sasl_auth_enable = yes
# sasl authの種別を設定。
# dovecotとcyrusがある。postconf -aで設定できるか確認。
# デフォルトはcyrusぽい。cyrusを使う場合はsaslauthdが別途必要。
smtpd_sasl_type = dovecot
# 認証用ソケット
smtpd_sasl_path = private/auth
# 匿名での送信拒否
smtpd_sasl_security_options = noanonymous
# ドメイン名の指定
smtpd_sasl_local_domain = $myhostname
# 接続時の制限
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
# 古いメールクライアント用
broken_sasl_auth_clients = yes

# 仮想ユーザの設定
# ドメイン設定、カンマ区切りで複数指定も可能
virtual_mailbox_domains = $myhostname
# 上記で作成したフォルダを指定
virtual_mailbox_base = /var/spool/virtual
# メールアドレスとメール保存先のmappingファイルを指定
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
# 上記で作成したアカウントのuidとgidを指定
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

vmailboxの作成

メールアドレスとフォルダの対情報を記載
保存先のフォルダ構成は、複数ドメインを考慮し
ドメイン名/ユーザー名/Maildirとする。

/etc/postfix/vmailbox
admin@black.jp black.jp/admin/Maildir/
webmaster@black.jp black.jp/webmaster/Maildir/
yamada@black.jp black.jp/yamada/Maildir/

postmapコマンドでdbファイル化する。(vmalbox.dbファイルが生成される)

# postmap vmailbox

master.cfファイルを編集する。以下の行のコメント化を解除

/etc/postfix/master.cf
smtp      inet  n       -       n       -       -       smtpd
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

postfixを再起動。

# systemctl restart postfix

dovecotのインストール

# yum install dovecot

編集するファイルは10-auth.conf10-ssl.conf10-auth.conf10-master.conf
10-auth.confで指定する以下のファイルも編集する。
auth-passwdfile.conf.extauth-static.conf.ext

10-auth.conf

!includeの行で
auth-passwdfile.conf.extauth-static.conf.extのコメント化を解除する。

/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = cram-md5 plain
(略)
!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
!include auth-static.conf.ext

10-ssl.conf

sslの行を変更。noとする。

/etc/dovecot/conf.d/10-ssl.conf
ssl = no

10-master.conf

service auth セクションのpostfix smtp-authを有効化する

/etc/dovecot/conf.d/10-master.conf
service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

auth-passwdfile.conf.ext

passwddbとuserdb内のarg行を編集。schemeをCRAM-MD5に変更

/etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
  driver = passwd-file
#  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users
}
userdb {
  driver = passwd-file
#  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/users
}

auth-static.conf.ext

uidとgidを仮想ユーザー用のアカウントのid、homeに受信用のフォルダを指定
%dがドメイン名、%nがユーザー名

/etc/dovecot/conf.d/auth-static.conf.ext
userdb {
  driver = static
  args = uid=5000 gid=5000 home=/var/spool/virtual/%d/%n
}

パスワードファイルの生成

# doveadm pw
Enter new password:
Retype new password:
{CRAM-MD5}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ファイルにメールアドレス:パスフレーズ形式で追記する

/etc/dovecot/users
admin@black.jp:{CRAM-MD5}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
yamada@black.jp:{CRAM-MD5}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

dovecotの再起動
systemctl restart dovecot

ユーザー管理

受信フォルダの作成

# mkdir -p /var/spool/virtual/black.jp/admin/Maildir
# mkdir -p /var/spool/virtual/black.jp/webmaster/Maildir
# mkdir -p /var/spool/virtual/black.jp/yamada/Maildir
# chown -R vmail:vmail /var/spool/virtual/black.jp/
# chmod 700 /var/spool/virtual/black.jp/
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?