CentOS7 + Postfix + Dovecot + MariaDB + PostfixAdmin + SSL/TLS + 迷惑メール振分防止 + Spam対策 でメールサーバー構築したった

[構造図](#構造図)
[基本環境](#基本環境)
[dnsレコード設定](#dnsレコード設定)
[linuxユーザー作成](#linuxユーザー作成)
[データベース設定](#データベース設定)
[postfixadmin-ドメインとアドレス管理](#postfixadmin-ドメインとアドレス管理)
[postfix-送信サーバー](#postfix-送信サーバー)
[dovecot-受信サーバー](#dovecot-受信サーバー)
[spamassassin-スパム対策](#spamassassin-スパム対策)
[postfix送信テスト](#postfix送信テスト)
[dovecot受信テスト](#dovecot受信テスト)
[メールログの確認](#メールログの確認)
[メールアドレス作成](#メールアドレス作成)
[メールクライアント設定](#メールクライアント設定)
[ssl/tls暗号化](#ssl/tls暗号化)
[postfixのssl/tls設定](#postfixのssl/tls設定)
[dovecotのssl/tls設定](#dovecotのssl/tls設定)
[ファイアウォール確認](#ファイアウォール確認)
[ssl/tlsメールクライアント設定](#ssl/tlsメールクライアント設定)
[迷惑メール振分防止dnsレコード設定](#迷惑メール振分防止dnsレコード設定)
[エラーログ確認](#エラーログ確認)
[参考記事](#参考記事)

#構造図
![Mail Server diagram.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1653133/592e449c-5921-3bde-c0ba-3cef420d95ce.jpeg)

#基本環境
`CentOS-7.9.2009`
`Apache-2.4.6`
`php-8.0.10`
`MariaDB-10.6.4`
`example.comでLet'sEncryptによるSSL取得済み`

<a id="a2"></a>
#dnsレコード設定
ドメイン管理会社のDNSレコード設定にて操作

Aレコード

```
ホスト名：example.com
TYPE:A
TTL:3600
VALUE:***.***.***.***＜IPアドレス＞

ホスト名：mail.example.com
TYPE:A
TTL:3600
VALUE:***.***.***.***＜IPアドレス＞
```
MXレコード

```
ホスト名：example.com
TYPE:MX
TTL:3600
VALUE:mail.example.com
優先：10
```
ホスト名の正引き確認

bind-utilsインストール

```
# yum -y install bind-utils
```

正引き確認

```
# host mail.example.com

mail.example.com has address ＜IPアドレス＞
```


#linuxユーザー作成
mailuserグループに属するmailuserユーザーを作成
uid=5000
gid=5000

```
# mkdir /home/mailuser
# groupadd -g 5000 mailuser
# useradd -g mailuser -u 5000 -d /home/mailuser -s /sbin/nologin mailuser
```

#データベース設定
###MySQLログイン
```
# mariadb -u root  -p
Enter password:
******
MariaDB [(none)]> 
```
###データベース「PostFixDB」作成
```
CREATE DATABASE PostFixDB character set utf8 collate utf8_bin;
```
###データベース一覧で確認
```
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| PostFixDB          |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
8 rows in set (0.001 sec)
```
###Postfix用ユーザー「postfix」作成
```
MariaDB [(none)]>　CREATE USER 'postfix'@'localhost' IDENTIFIED BY '[MySQLユーザーパスワード]';

GRANT ALL ON PostFixDB.* TO "postfix"@"localhost";
```
###データベース「PostFixDB」に入る
```
MariaDB [(none)]>　USE PostFixDB;

Database changed
MariaDB [PostFixDB]>
```
###ユーザー「postfix」の権限確認
```
MariaDB [PostFixDB]> SHOW GRANTS FOR postfix@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for postfix@localhost                                                                                                                                                                                                                 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `postfix`@`localhost` IDENTIFIED BY PASSWORD '*205201BC4A2520ADFCF65CACEC977E2BCCD10174'                                                                                                                      |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `PostFixDB`.* TO `postfix`@`localhost` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
```

#postfixadmin-ドメインとアドレス管理
###PostfixAdmin-2.92動作せず
最初、参考記事コピペでPostfixAdmin-2.92インストールしたが、セットアップページが表示されない
調べると、php8.0には3.3.4以上でないと適合しないことが判明
https://github.com/postfixadmin/postfixadmin/releases
###PostfixAdmin-3.3.10動作せず
ならばと、最新バージョンPostfixAdmin-3.3.10インストールしたが、データベースのアップデート途中で書き換えエラー発生
ダウンロードページをよく見ると3.3.9と3.3.10には「bug fixes」の表記あるため回避し、PostfixAdmin-3.3.8 をインストール

###PostfixAdmin-3.3.8インストール成功
SSL通信で使えるように「example.com」配下へインストール

```
# cd /var/www/html/example.com
# wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.8.tar.gz
# ls /var/www/html/example.com
postfixadmin-3.3.8.tar.gz
# tar zxvf postfixadmin-3.3.8.tar.gz
# ls /var/www/html/example.com
postfixadmin-3.3.8.tar.gz postfixadmin-postfixadmin-3.3.8
# mv postfixadmin-postfixadmin-3.3.8 postfixadmin
```
###config.local.phpでの設定
config.inc.phpをコピーしてconfig.local.phpを作成

```
# cp /var/www/html/postfixadmin/config.inc.php /var/www/html/postfixadmin/config.local.php
```
config.local.phpに設定書き込み

```:＃&nbsp;vim&nbsp;/var/www/html/postfixadmin/config.local.php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixa';
$CONF['database_password'] = '＜パスワード＞';
$CONF['database_name'] = 'PostFixDB';
```

templates_cディレクトリを作成

```
# mkdir /var/www/html/postfixadmin/templates_c
# ls /var/www/html/postfixadmin/
# chown -R apache:apache /var/www/html/postfixadmin/templates_c
# chmod 777 /var/www/html/postfixadmin/templates_c
# ls -l /var/www/html/postfixadmin/
```

###バーチャルホスト設定
バーチャルホスト設定がまだの場合は、以下を設定

```:#&nbsp;vim&nbsp;/etc/httpd/conf.d/virtual.conf
<virtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/example.com
    RewriteEngine on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
<IfModule mod_ssl.c>
<virtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html/example.com
    ServerAlias mail.example.com
    AllowEncodedSlashes On
    CustomLog      logs/example.com.access.log combined
    ErrorLog       logs/example.com.error.log
<Directory /var/www/html/example.com>
        SetEnv HTTP_X_FORWARDED_PROTO http
        SetEnv REAL_HOST_NAME example.com
        AllowOverride All
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</virtualHost>
</IfModule>

```

###ブラウザ操作
ブラウザでアクセス

`https://example.com/postfixadmin/public/setup.php`

SetupPasswordに任意のパスワードを入力し、`Generate password hash`ボタンをクリック
表示されたパスワードをconfig.local.phpの$CONF[‘setup_password’] = ‘changeme’;内に入力

```:＃&nbsp;vim&nbsp;/var/www/html/postfixadmin/config.local.php
$CONF[‘setup_password’] = ‘*****’;
```

ブラウザをリロード

`https://example.com/postfixadmin/public/setup.php`

システム管理者の登録

`Setup password`に先ほどと同じSetup passwordを入力
`管理者`に連絡先メールアドレス
`パスワード`に任意のログインパスワード
`パスワード（確認）`に上記と同じパスワード
`管理者追加`をクリック

PostfixAdminにログイン
`https://nakatou.jp/postfixadmin/public/login.php`

#postfix-送信サーバー

###Postfixインストール

```
# yum install gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel 
# yum install libxml2 libxml2-devel libxslt-devel libxslt libxslt-devel gd-devel
# yum install perl-ExtUtils-Embed GeoIP-devel gperftools-devel flex libcap-devel
# yum install postfix cyrus-sasl-md5  libdbi-dbd-mysql cyrus-sasl-plain
```

###Postfix設定ファイルの編集

Postfixのファイル構造
/etc/postfix/main.cf
　　∟/etc/postfix/mysql_virtual_alias_maps.cf
　　∟/etc/postfix/mysql_virtual_domains_maps.cf
　　∟/etc/postfix/mysql_virtual_mailbox_maps.cf
/etc/postfix/master.cf


/etc/postfix/main.cfをバックアップの後、編集します

```
# cp -p /etc/postfix/main.cf /etc/postfix/main.cf.cp
```

```:#&nbsp;vim&nbsp;/etc/postfix/main.cf
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = 
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown
# 最終行に追加します
# SMTP-Auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $mydomain
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net,
        reject_rbl_client cbl.abuseat.org,
        reject_rbl_client truncate.gbudb.net,
        check_client_access hash:/etc/postfix/reject_client,
        permit
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
# Virtual Domains
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /home/mailuser
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_uid_maps = static:500
virtual_gid_maps = static:5000
# Mailbox limit（クォーターの設定はなし）
virtual_mailbox_limit = 0
```
/etc/postfix/master.cfをバックアップの後、編集します

```
# cp -p /etc/postfix/master.cf /etc/postfix/master.cf.cp
```

```:#&nbsp;vim&nbsp;/etc/postfix/master.cf
↓コメントアウト外す
submission inet n       -       n       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt

↓コメントアウト外す
  -o smtpd_sasl_auth_enable=yes
```
###Postfix設定ファイルの作成
バーチャルドメイン各種ファイル作成
mysql_virtual_alias_maps.cf 

```:#&nbsp;vim&nbsp;/etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = ****
hosts = localhost
dbname = PostFixDB
table = alias
select_field = goto
where_field = address
```

mysql_virtual_domains_maps.cf

```:#&nbsp;vim&nbsp;/etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = ****
hosts = localhost
dbname = PostFixDB
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'
```
mysql_virtual_mailbox_maps.cf 

```:#&nbsp;vim&nbsp;/etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = ****
hosts = localhost
dbname = PostFixDB
table = mailbox
select_field = maildir
where_field = username
```

reject_clientファイル生成

```
# sudo touch /etc/postfix/reject_client
# sudo postmap /etc/postfix/reject_client
```

###Postfix設定ファイルのチェック
```
# postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_transport = local
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination =
mydomain = example.com
myhostname = example.com
mynetworks = 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP unknown
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, reject_rbl_client truncate.gbudb.net, check_client_access hash:/etc/postfix/reject_client, permit
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
unknown_local_recipient_reject_code = 550
virtual_alias_domains = $virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/mailuser
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 0
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000

```

#dovecot-受信サーバー
###Dovecotインストール

```
# yum -y install dovecot dovecot-mysql
```
###サーバー内で権限変更

```
# chown -R mailuser:dovecot /etc/dovecot
# chmod -R o-rwx /etc/dovecot
```

###Dovecot設定ファイルの編集
ファイル構造
/etc/dovecot/dovecot.conf
　　∟ /etc/dovecot/local.conf
　　　　　∟/etc/dovecot/dovecot-sql.conf.ext


dovecot.conf編集


```
cp -p /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/dovecot.conf
protocols = imap pop3

↓コメントアウト入れる
#!include conf.d/*.conf

↓下記追加
!include_try local.conf
```

local.conf作成

/etc/dovecot/conf.d/以下のconf設定ファイルをまとめる
以下のファイルをひとまとめにし、システムアップデートに対応するため
10-mail.conf
10-master.conf
10-auth.conf
10-ssl.conf
20-pop3.conf
auth-sql.conf.ext

```:#&nbsp;vim&nbsp;/etc/dovecot/local.conf
 auth_debug_passwords = yes
 auth_verbose = no
 auth_debug = yes
 
 listen = *
 
 ###from 10-auth.conf
 disable_plaintext_auth = no
 auth_mechanisms = PLAIN LOGIN CRAM-MD5
 
 ###from 10-mail.conf
 mail_location = maildir:/home/mailuser/%d/%n
 mail_uid = mailuser
 mail_gid = mailuser
 mail_privileged_group = mailuser
 first_valid_uid = 5000
 first_valid_gid = 5000
 mail_plugins = quota
 
 ###from 10-ssl.conf
 ssl = no
 
 ###from 10-master.conf
 service imap-login {
   inet_listener imap {
     port = 143
   }
   inet_listener imaps {
     #port = 993
     #ssl = yes
   }
 }
 service pop3-login {
   inet_listener pop3 {
     port = 110
   }
   inet_listener pop3s {
     #port = 995
     #ssl = yes
   }
 }
 service auth {
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
     user = mailuser
     group = mailuser
   }
   unix_listener auth-userdb {
     mode = 0600
     user = mailuser
     group = mailuser
   }
   user = dovecot
 }
 
 service auth-worker {
   user = mailuser
 }
 
 ###from auth-sql.conf.ext
 protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
   mail_plugins = $mail_plugins imap_quota
 }
 protocol pop3 {
   pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
 }
 passdb {
   driver = sql
   args = /etc/dovecot/dovecot-sql.conf.ext
 }
 userdb {
   driver = sql
   args = /etc/dovecot/dovecot-sql.conf.ext
 }
 service auth {
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
   }
 }
```

dovecot-sql.conf.ext作成

```:#&nbsp;vim&nbsp;/etc/dovecot/dovecot-sql.conf.ext
driver = mysql
default_pass_scheme = MD5-CRYPT
connect = host=localhost dbname=PostFixDB user=postfix password=****
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/mailuser/', maildir) as home, 5000 as uid, 5000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
iterate_query = SELECT userid AS username, domain FROM users
```


###オプション----ここから↓
上記local.confの作成しない場合、以下の編集・作成を行う
10-mail.conf編集

```
# cp -p /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/mailuser/%d/%n
first_valid_uid = 5000
first_valid_gid = 5000
```

10-master.conf編集

```
# cp -p /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-master.conf
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
    mode = 0660
  }
  inet_listener imap {
    port = 143 ←有効化
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
  inet_listener pop3 {
    port = 110 ←有効化
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
```

10-auth.conf編集

```
# cp -p /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-auth.conf
#auth_mechanisms = plain
↓
auth_mechanisms = plain login

disable_plaintext_auth = no

↓コメントアウト外す
!include auth-system.conf.ext
!include auth-sql.conf.ext
```

10-ssl.conf編集

```
# cp -p /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-ssl.conf
ssl = no
```

20-pop3.conf編集

```
# cp -p /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/20-pop3.conf
protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       mail_max_userip_connections = 1000
}
```

auth-sql.conf.ext作成

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
```
dovecot-sql.conf.ext作成

```:#&nbsp;vim&nbsp;/etc/dovecot/dovecot-sql.conf.ext
driver = mysql
default_pass_scheme = MD5-CRYPT
connect = host=localhost dbname=PostFixDB user=postfix password=****
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/mailuser/', maildir) as home, 5000 as uid, 5000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
iterate_query = SELECT userid AS username, domain FROM users
```

###オプション----ここまで↑


###Dovecot設定ファイルのチェック
```
# doveconf -n

# 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf
# OS: Linux 3.10.0-1160.41.1.el7.x86_64 x86_64 CentOS Linux release 7.9.2009 (Core) ext4
# Hostname: v157-7-134-162.myvps.jp
auth_mechanisms = plain login
disable_plaintext_auth = no
first_valid_gid = 5000
first_valid_uid = 5000
mail_location = maildir:/home/mailuser/%d/%n
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  driver = pam
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service imap-login {
  inet_listener imap {
    port = 143
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 0
  }
}
ssl = no
userdb {
  driver = passwd
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol pop3 {
  mail_max_userip_connections = 1000
  pop3_uidl_format = %08Xu%08Xv
}

```

#spamassassin-スパム対策
###spamassassinインストール

```
# yum -y install spamassassin
```
###spamassassinシステムユーザを作成

```
# groupadd spamd
# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
# chown spamd:spamd /var/log/spamassassin
```

###spamassassin設定

```:#&nbsp;vim&nbsp;/etc/postfix/master.cf
smtp      inet  n       -       n       -       -       smtpd

↓以下に変更

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin

↓以下を追加
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
```
###Postfix有効化
Postfix自動起動設定

```
# systemctl enable postfix
```
Postfix自動起動設定の確認

```
# systemctl is-enabled postfix
```
enableが返ってきたらOK

Postfix再起動

```
# systemctl restart postfix
```

###Dovecot有効化
Dovecot自動起動設定

```
# systemctl enable dovecot
```
Dovecot自動起動設定の確認

```
# systemctl is-enabled dovecot
```
enableが返ってきたらOK

Dovecot再起動

```
# systemctl restart dovecot
```
###saslauthd有効化
saslauthd自動起動設定

```
# systemctl enable saslauthd
```
saslauthd自動起動設定の確認

```
# systemctl is-enabled saslauthd
```
enableが返ってきたらOK

saslauthd再起動

```
# systemctl restart saslauthd
```
###spamassassin有効化
spamassassin自動起動設定

```
# systemctl enable spamassassin
```
spamassassin自動起動設定の確認

```
# systemctl is-enabled spamassassin
```
enableが返ってきたらOK

spamassassin再起動

```
# systemctl restart spamassassin
```



#postfix送信テスト
ポート番号：

smtp　587
smtps　465


```
# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ＜サーバー名＞ ESMTP unknown
```
```
EHLO localhost
250-＜サーバー名＞
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
```
```
MAIL From: ＜送信元メールアドレス＞
250 2.1.0 Ok
```
```
RCPT To: ＜送信先メールアドレス＞
250 2.1.5 Ok
```
```
DATA
354 End data with <CR><LF>.<CR><LF>
```
```
From: ＜送信元メールアドレス＞
To: ＜送信先メールアドレス＞
Subject: Test Mail
This is a test.
.
250 2.0.0 Ok: queued as 8166B81020
```
```
quit
221 2.0.0 Bye
Connection closed by foreign host
```
送信先メールアドレスで着信したか、確認する

#dovecot受信テスト
ポート番号：

pop3　110
pops3　995
imap　143
imaps　993

```
# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK ready.
```
```
USER ＜ユーザー名＞
+OK
```
```
PASS ＜パスワード＞
+OK
```
```
LIST
+OK
1 1366
.
```
```
RETR ＜メール番号＞
+OK
Return-Path: ＜メールアドレス＞
Received: from ＜送信元メールアドレス＞ (HELO aki) (192.168.1.1)
  by 192.168.1.2 with SMTP; 9 Jul 2009 11:40:48 +0900
Subject:＜件名＞
From:＜送信元メールアドレス＞
To:＜受信メールアドレス＞
X-UIDL: 1234567890
＜本文＞
.
```
```
DELE ＜メール番号＞
+OK
```
```
QUIT
+OK
Connection closed by foreign host.
```
#メールログの確認
```
# cat /var/log/maillog
# cat /var/log/dovecot.log
```

#メールアドレス作成
###Postfixadminで登録


`https://example.com/postfixadmin/public/login.php`

ドメイン登録
`example.com`

メールアドレス登録
`info@example.com`

###サーバー内にディレクトリが作成されていることを確認
ドメイン用ディレクトリ

```
# ls /home/mailuser/
example.com
```

メールアドレス用ディレクトリ

```
# ls /home/mailuser/example.com/
info
```

#メールクライアント設定
ローカル内のメールクライアントでメールアドレス設定
POP3とIMAP両方でテスト

POP3受信
メールアドレス：info@example.com
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：STARTTLS
ポート番号：110
認証：PLAIN

IMAP受信
メールアドレス：info@example.com
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：STARTTLS
ポート番号：143
認証：PLAIN

SMTP
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：STARTTLS
ポート番号：587


###送受信テスト
メールクライアント上でメール送受信テストを行う
POP3およびIMAPで設定し送受信テスト


#ssl/tls暗号化
example.comには、すでにLet'sEncryptでSSL証明書を発行済

###Let'sEncrypt自動更新後の再起動設定
PostfixとDovecotでこの証明書を利用するには、証明書更新後に再起動が必要のため設定

```:#&nbsp;crontab&nbsp;-e
00 3 * * * certbot renew -q --deploy-hook "systemctl restart httpd postfix dovecot"
00 5 * * * certbot renew -q --deploy-hook "systemctl restart httpd postfix dovecot"
```

設定の確認

```
# crontab -l

00 3 * * * certbot renew -q --deploy-hook "systemctl restart httpd postfix dovecot"
00 5 * * * certbot renew -q --deploy-hook "systemctl restart httpd postfix dovecot"
```

#postfixのssl/tls設定
main.cf編集

```
# cp -p  /etc/postfix/main.cf /etc/postfix/main.cf.cp2
```

```:#&nbsp;vim&nbsp;/etc/postfix/main.cf
### SSL/TLS Settings
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
```

master.cf編集

```
# cp -p /etc/postfix/master.cf /etc/postfix/master.cf.cp2
```

```:#&nbsp;vim&nbsp;/etc/postfix/master.cf
↓コメントアウト外す
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps

↓コメントアウト外す
-o smtpd_tls_wrappermode=yes

↓コメントアウト外す
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions

↓コメントアウト外す
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
```
postfix設定の確認

```
# postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_transport = local
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination =
mydomain = nakatou.jp
myhostname = mail.nakatou.jp
mynetworks = 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP unknown
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, reject_rbl_client truncate.gbudb.net, check_client_access hash:/etc/postfix/reject_client, permit
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
unknown_local_recipient_reject_code = 550
virtual_alias_domains = $virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/mailuser
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 0
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000
```

postfixエラーチェック

```
# postfix check
```

postfix再起動

```
# systemctl restart postfix
```

postfixステータス確認

```
# systemctl status postfix

● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2021-09-20 16:44:34 JST; 10s ago
  Process: 13336 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
  Process: 13355 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 13349 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 13346 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 13426 (master)
   CGroup: /system.slice/postfix.service
           ├─13426 /usr/libexec/postfix/master -w
           ├─13427 pickup -l -t unix -u
           ├─13428 qmgr -l -t unix -u
           ├─13429 smtpd -n smtp -t inet -u -o stress= -s 2
           ├─13430 proxymap -t unix -u
           ├─13431 anvil -l -t unix -u
           └─13432 smtpd -n smtp -t inet -u -o stress= -s 2
```

ポート番号465でのリッスン確認

```
# netstat -nat

tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN
```
LISTENになっていればオーケー

#dovecotのssl/tls設定

local.conf編集

```
cp -p /etc/dovecot/local.conf /etc/dovecot/local.conf.cp
```

```:#&nbsp;vim&nbsp;/etc/dovecot/local.conf
###from auth-sql.conf.ext
service imap-login {
  inet_listener imap {
↓下記変更
    port = 0
  }
  inet_listener imaps {
↓コメントアウト外す
    port = 993
↓コメントアウト外す
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
↓下記変更
    port = 0
  }
  inet_listener pop3s {
↓コメントアウト外す
    port = 995
↓コメントアウト外す
    ssl = yes
  }
}

###from 10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/example.jp/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.jp/privkey.pem
```
###オプション----ここから↓
上記local.confを使用しない場合、以下の編集・作成を行う
10-ssl.conf編集

```
# cp -p /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.cp2
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-ssl.conf
ssl = required

ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem
```

10-master.conf編集

```
# cp -p /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.cp2
```

```:#&nbsp;vim&nbsp;/etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
↓下記変更
  port = 0
  }
inet_listener imaps {
↓コメントアウト外す
  port = 993
↓コメントアウト外す
  ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
↓下記変更
  port = 0
  }
inet_listener pop3s {
↓コメントアウト外す
  port = 995
↓コメントアウト外す
  ssl = yes
  }
}
```
###オプション----ここまで↑

dovecot設定確認

```
# doveconf -n

# 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf
# OS: Linux 3.10.0-1160.42.2.el7.x86_64 x86_64 CentOS Linux release 7.9.2009 (Core) ext4
# Hostname: v157-7-134-162.myvps.jp
auth_mechanisms = plain login
disable_plaintext_auth = no
first_valid_gid = 5000
first_valid_uid = 5000
mail_location = maildir:/home/mailuser/%d/%n
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl = required
ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key =  # hidden, use -P to show it
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol pop3 {
  mail_max_userip_connections = 1000
  pop3_uidl_format = %08Xu%08Xv
}

```

dovecot再起動

```
# systemctl restart dovecot
```

dovecotステータス確認

```
# systemctl status dovecot

● dovecot.service - Dovecot IMAP/POP3 email server
   Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2021-09-20 17:49:15 JST; 14s ago
     Docs: man:dovecot(1)
           http://wiki2.dovecot.org/
  Process: 13667 ExecStop=/usr/bin/doveadm stop (code=exited, status=0/SUCCESS)
  Process: 13683 ExecStart=/usr/sbin/dovecot (code=exited, status=0/SUCCESS)
  Process: 13679 ExecStartPre=/usr/sbin/portrelease dovecot (code=exited, status=0/SUCCESS)
  Process: 13672 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
 Main PID: 13685 (dovecot)
   CGroup: /system.slice/dovecot.service
           ├─13685 /usr/sbin/dovecot
           ├─13686 dovecot/anvil
           ├─13687 dovecot/log
           ├─13689 dovecot/config
           ├─13690 dovecot/auth
           └─13691 dovecot/auth -w

```

ポート番号POP3S用の995と、IMAPS用の993でのリッスン確認

```
# netstat -nat

tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN  
```

#ファイアウォール確認

```
# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ftp http https imap pop3 smtp smtp-submission ssh
  ports: 63963/tcp 61000-61005/tcp 443/tcp 993/tcp 80/tcp 25/tcp 465/tcp 587/tcp 995/tcp 110/tcp 143/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
```
`services:`
内に
`imaps smtps pop3s`
が含まれているか確認

含まれていない場合は追加
追加項目が１個の場合は{}外す

```
# firewall-cmd --add-service={smtps,imaps,pop3s} --permanent

success
```

設定の読み込み

```
# firewall-cmd --reload

success
```

設定の確認

```
# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ftp http https imap imaps pop3 pop3s smtp smtp-submission smtps ssh
  ports: 63963/tcp 61000-61005/tcp 443/tcp 993/tcp 80/tcp 25/tcp 465/tcp 587/tcp 995/tcp 110/tcp 143/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
```

`imaps smtps pop3s`
が含まれていることを確認

#ssl/tlsメールクライアント設定
ローカル内のメールクライアントでメールアドレス設定
POP3とIMAP両方でテスト

POP3受信
メールアドレス：info@example.com
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：SSL/TLS
ポート番号：995
認証：PLAIN

IMAP受信
メールアドレス：info@example.com
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：SSL/TLS
ポート番号：993
認証：PLAIN

SMTP
ユーザー名：info@example.com
受信サーバー：mail@example.com
セキュリティ：SSL/TLS
ポート番号：465

###認証できない場合

エラーログ確認

```
cat /var/log/maillog
```


###送受信テスト
メールクライアント上でメール送受信テストを行う
POP3SおよびIMAPSで設定し送受信テスト


#迷惑メール振分防止dnsレコード設定
###SPFレコード設定

TXTレコード

```
ホスト名：example.com
TYPE:TXT
TTL:3600
VALUE:v=spf1 a:mail.example.com ~all
```
設定状況の確認

以下のウェブサイトにアクセス
`https://www.kitterman.com/spf/validate.html`
Is this SPF record valid - syntactically correct?以下に
Domain:`example.com`
SPF Record:`v=spf1`
を入力し、`Check SPF record`をクリック

`SPF record passed validation test with pySPF (Python SPF library)!`
と表示されれば登録が成功している
`Results – PermError SPF Permanent Error: Too many DNS lookups`
と表示されれば不具合あり

###DKIM設定

▶︎インストール
EPELレポジトリが未インストールならインストール

```
# yum -y install epel-release
```
インストール前にopendkimパッケージの確認

```
# yum search opendkim
```

`opendkim.x86_64 : A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail`
が含まれているかを確認

opendkimパッケージの詳細を確認

```
# yum info opendkim
```
説明にメールに電子署名を行うためのパッケージであることが記載されているのを確認

opendkimパッケージインストール

```
# yum -y install opendkim

```

インストール状況の確認

```
# yum list installed | grep opendkim

libopendkim.x86_64 2.11.0-0.1.el7 @epel
opendkim.x86_64 2.11.0-0.1.el7 @epel
```


▶︎秘密鍵作成
フォルダ作成

```
# mkdir /etc/opendkim/keys/example.com
```
電子署名用のキーペア作成
`opendkim-genkey -D ＜ファイル保存パス＞/ -d ＜ドメイン名＞ -s ＜セレクタ名＞`
セレクタ名には作成日を6桁数字で入れるのがわかりやすい

```
# opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s 181026
```
作成状況の確認

```
# ls -al /etc/opendkim/keys/example.com/

合計 16
drwxr-xr-x 2 root root 4096 10月 26 10:09 .
drwxr-x--- 3 opendkim opendkim 4096 10月 26 10:08 ..
-rw------- 1 root root 891 10月 26 10:09 181026.private
-rw------- 1 root root 333 10月 26 10:09 181026.txt
```

キーペア（秘密鍵／公開鍵）ファイルの所有者変更

```
# chown -R opendkim:opendkim /etc/opendkim/keys/example.com/
```

変更状況の確認

```
# ls -al /etc/opendkim/keys/example.com/

合計 16
drwxr-xr-x 2 opendkim opendkim 4096 10月 26 10:09 .
drwxr-x--- 3 opendkim opendkim 4096 10月 26 10:08 ..
-rw------- 1 opendkim opendkim 891 10月 26 10:09 181026.private
-rw------- 1 opendkim opendkim 333 10月 26 10:09 181026.txt
```

公開鍵の確認

```
# cat /etc/opendkim/keys/example.com/181026.txt

181026._domainkey IN TXT ( "v=DKIM1; k=rsa;
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFOu6xDK9rSuttAbMNY9Cs2cmOWxUV48kMvalmFo0trkL6zoncBvYyCZ7z4o9F79cWPQCLSNLuviCRbS9k5LsZEr9M8nM+k+zqYQKh8ttTWMt5odvpcz6C4miQMJ/Cc2gfcpRQDFWWSqm2O6BhALV7p1tzUmbchLxtBRtjcMXXTQIDAQAB" ) ; ----- DKIM key 181026 for example.com
```
公開鍵の見方
v=DKIM1：	keyレコードのバージョン番号（指定する場合はDKIM1）
k=rsa：	電子署名の作成に利用できる鍵の形式、DKIMではRSAのみサポート
p=....：	公開鍵データ



▶︎公開鍵用レコードの登録
サーバーのDNSレコード設定ページより登録

`ホスト名：＜セレクタ名＞._domainkey.＜ドメイン名＞`
`TYPE:TXT`
`TTL:3600`
`VALUE:v=DKIM1; k=rsa; p=＜公開鍵データ＞`

▶︎ADSPレコード登録

`ホスト名：_adsp._domainkey.＜ドメイン名＞`
`TYPE:TXT`
`TTL:3600`
`VALUE:dkim=unknown`

▶︎DKIM設定の確認

公開鍵設定の確認

```
# dig ＜セレクタ名＞._domainkey.＜ドメイン名＞ txt

<<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> ＜セレクタ名＞._domainkey.＜ドメイン名＞ txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39057
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;＜セレクタ名＞._domainkey.＜ドメイン名＞. IN TXT
;; ANSWER SECTION:
＜セレクタ名＞._domainkey.＜ドメイン名＞. 500 IN TXT "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFOu6xDK9rSuttAbMNY9Cs2cmOWxUV48kMvalmFo0trkL6zoncBvYyCZ7z4o9F79cWPQCLSNLuviCRbS9k5LsZEr9M8nM+k+zqYQKh8ttTWMt5odvpcz6C4miQMJ/Cc2gfcpRQDFWWSqm2O6BhALV7p1tzUmbchLxtBRtjcMXXTQIDAQAB"
;; Query time: 2 msec
;; SERVER: 157.7.180.133#53(157.7.180.133)
;; WHEN: 金 10月 26 10:34:29 JST 2018
;; MSG SIZE rcvd: 315
```
ADSPレコード設定の確認

```
# dig _adsp._domainkey.＜ドメイン名＞ txt

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> _adsp._domainkey.＜ドメイン名＞ txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16470
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_adsp._domainkey.＜ドメイン名＞. IN TXT
;; ANSWER SECTION:
_adsp._domainkey.＜ドメイン名＞. 500 IN TXT "dkim=unknown"
;; Query time: 3 msec
;; SERVER: 157.7.180.133#53(157.7.180.133)
;; WHEN: 金 10月 26 10:34:58 JST 2018
;; MSG SIZE rcvd: 82
```

#エラーログ確認

```
cat /var/log/dovecot.log

cat /var/log/maillog
```

***
#参考記事
基本の流れ
`https://ex1.m-yabe.com/archives/4606`
telnet送信テスト
`http://ash.jp/net/telnet_smtp.htm`
telnet受信テスト
`https://centossrv.com/memo/log/19.shtml`
PostfixAdmin
`https://ac-5.net/linux/postfixadmin`
SPFレコード
`https://www.kagoya.jp/howto/it-glossary/mail/spf/`
DKIM
`https://www.rem-system.com/dkim-postfix04/#6_opendkim`
SSL/TLS設定
`https://www.rem-system.com/mail-postfix03/`
spamassassin
`https://www.zealseeds.com/Infrastructure/server/mail/index.html`
Domain Quota（未設定）
`https://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual`