その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形式を採用します。
...
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
...
...
# コメントアウトを外す
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
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
...
protocols = imap pop3
...
listen = *
...
# デバッグをするのであれば追加
auth_verbose = yes
auth_debug = yes
...
...
# no-reply@example.comの場合、%nはno-replyを意味します
mail_location = maildir:/home/%n/Maildir
...
# Maildirなのであまり意味はない?けど一応。。。
mail_privileged_group = mail
mail_access_groups = mail
...
...
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
}
...
...
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
...
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
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の設定