4
1

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.

CentOS8 PostfixとDovecotでメール送受信(その1)

Last updated at Posted at 2021-01-28

その1 まずは暗号化なしでメール送受信

CentOS8でメール送受信かつSSL対応とDKIM対応をしたのでその時のメモ
まずは平文で送受信できるところまでを設定します。

Postfix

  • 1.インストール

先に必要なものをインストールします。

$ yum list installed | grep postfix
$ yum -y update postfix
(もしなければ yum -y install postfix)
$ yum -y install cyrus-sasl
$ yum -y install cyrus-sasl-plain
$ yum -y install cyrus-sasl-devel
  • 2.設定ファイル

バックアップを取りつつ必要な編集を行います。

$ cd /etc/postfix/
$ cp main.cf main.cf.org
$ cp master.cf master.cf.org
$ vi main.cf
$ vi master.cf

今回はexample.comというドメインでホストはmail.example.comとします。
以下が編集点です。Maildir形式を採用します。

main.cf
...
myhostname = mail.example.com
...
mydomain = example.com
...
myorigin = $mydomain
...
inet_interfaces = all
...
inet_protocols = all
...
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
...
home_mailbox = Maildir/
...
stmpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options=noanonymous
...
master.cf
...
# コメントアウトを外す
submission inet n       -       n       -       -       smtp
...
# コメントアウトを外す
-o smtpd_sasl_auth_enable=yes
...
# コメントアウトを外す
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
...
  • 3.SASLによるSTMP認証

SASLの自動起動を行います。

$ systemctl start saslauthd
$ systemctl enable saslauthd

次にSASLの設定を行います。

$ vi /etc/sasl2/smtpd.conf
/etc/sasl2/smtpd.conf
pwcheck_method: auxprop
mech_list: plain cram-md5 login

Dovecot

  • 1.インストール

先に必要なものをインストールします。

$ yum list installed | grep dovecot
$ yum -y update dovecot
(もしなければ yum -y install dovecot)
$ yum -y install cyrus-sasl
  • 2.設定ファイル

バックアップを取りつつ必要な編集を行います。

$ cd /etc/dovecot/
$ cp dovecot.conf dovecot.conf.org
$ cd conf.d
$ cp 10-mail.conf 10-mail.conf.org
$ cp 10-auth.conf 10-auth.conf.org
$ cp 10-mail.conf 10-mail.conf.org
$ cp 10-ssl.conf 10-ssl.conf.org
$ cp auth-passwdfile.conf.ext.conf auth-passwdfile.conf.ext.org
dovecot.conf
...
protocols = imap pop3
...
listen = *
...
# デバッグをするのであれば追加
auth_verbose = yes
auth_debug = yes
...
10-mail.conf
...
# no-reply@example.comの場合、%nはno-replyを意味します
mail_location = maildir:/home/%n/Maildir
...
# Maildirなのであまり意味はない?けど一応。。。
mail_privileged_group = mail
mail_access_groups = mail
...
10-master.conf
...
service imap-login {
  inet_listener imap {
    #コメントアウトを外してポート設定
    port = 143
  }
...
service pop3-login {
  inet_listener pop3 {
    #コメントアウトを外してポート設定
    port = 110
  }
...
service submission-login {
  inet_listener submission {
    #コメントアウトを外してポート設定
    port = 587
  }
}
...
service auth {
  ...
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
...
10-auth.conf
...
disable_plaintext_auth = no
...
## 今回はpasswdfileを使います
#!include auth-deny.conf.ext
#!include auth-master.conf.ext

#!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
...
```auth-passwdfile-conf
passdb {
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
}
userdb {
  driver = passwd-file
  #args = username_format=%u /etc/dovecot/users
  args = /etc/dovecot/users

  # Default fields that can be overridden by passwd-file
  #default_fields = quota_rule=*:storage=1G

  # Override fields from passwd-file
  #override_fields = home=/home/virtual/%u
}

通信設定

  • 1.起動
$ systemctl start postfix
$ systemctl enable postfix
$ systemctl start dovecot
$ systemctl enable dovecot
  • 2.ファイヤーウォール
    必要なポートを開けます。
$ firewall-cmd --permanent --zone=public --add-port=587/tcp
$ firewall-cmd --permanent --zone=public --add-port=110/tcp
$ firewall-cmd --permanent --zone=public --add-port=143/tcp
$ firewall-cmd --reload

ユーザー

  • 1.システムユーザー

メールアカウントはnologinグループにします。またユーザー作成時に自動的にMaildirディレクトリが作成されるようにします。
(パスワードをメモしておくこと)

$ mkdir -p /etc/skel/Maildir/{new,cur,tmp}
$ chmod -R 700 /etc/skel/Maildir/
$ useradd -s /sbin/nologin no-reply
$ passwd no-reply
  • 2.SASL DB

Postfixはユーザー照合をSASLのデータベースで行います。

ユーザーの作成
$ saslpasswd2 -c -u example.com no-reply
ユーザー一覧
$ sasldblistusers2

sasldb2の権限などを変更します。

$ chgrp postfix /etc/sasldb2  
$ chmod 640 /etc/sasldb2
$ ln /etc/sasldb2 /var/spool/postfix/etc/sasldb2
  • 3.passwdfile

Dovecotが参照するユーザーのファイルを作成します。
ユーザーIDが必要なので確認を合わせて行います。

$ cat /etc/passwd
$ vi /etc/dovecot/users
$ chmod 640 /etc/dovecot/users
$ chown dovecot:dovecot /etc/dovecot/users
/etc/dovecot/users.
no-reply@example.com:{PLAIN}password:1001:1001::/home/no-reply:/sbin/nologin

1001はユーザーIDの例です。

DNS

必要なMXレコード、SPFレコード、逆引きレコードを設定します。
(わかると思いますがIPアドレス123.456.789.012は仮です)

mx: mail.example.com 10
spf: v=spf1 ip4:123.456.789.012 include:example.com -all
rtp: 123.456.789.012 3600 IN PTR example.com

確認は

$ dig -t MX example.com
$ dig -t TXT example.com
$ dig -x 123.456.789.012

テスト

最後にメールを自分自身に送ります。

$ sendmail no-reply@example.com -f no-reply@example.com
From: no-reply@example.com
To: no-reply@example.com
Subject: test

test

.

.で終了です。
/home/no-reply/Maildir/のnewやcurの中にメールが来ていることを確認します。
ログを都度確認して設定を確かめましょう。

$ cat /var/log/maillog

問題がなければメールソフトの平文でアカウントが作成できるはずです。
次回はSTARTTLSを有効にする設定を行な、、えれば、いいな。。。
(追記)
次回、STARTTLSの設定

4
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?