Amazon Linuxで、Postfix、Dovecot、Postfixadmin、（IMAP:STARTTLS、IMAPS:SSL/TLS、SMTP(587):STARTTLS 、SMTPS:SSL/TLS）構築

# はじめに
**AWS EC2** の**Amazon Linux**を想定し、Postfix、Dovecot、amavisd、Postfixadminで構築したときのメモです。
ドメインの登録、Elastic IPの割り当て、ポート 22, 25, 80, 143, 443, 465, 587, 993 は、開けてあるものとします。

### メールサーバーの接続構成
| タイプ  | ポート番号 |暗号化の種類|
|:------|:-------:|:--------:|
| SMTP  | 25  |    --     |
| SMTPS | 465 | SSL/TLS   |
| SMTP  | 587 | STARTTLS |
| IMAP  | 143 | STARTTLS |
| IMAPS | 993 | SSL/TLS  |

### 構築時の各バージョン

| アプリなど    | バージョン   |
|:-------------|:-----------:|
| Apache       |      2.4.18 |
| PHP          |      5.6.19 |
| Mysql        |      5.6.29 |
| Postfix      |      2.6.6  |
| Dovecot      |      2.2.10 |
| postfixadmin |      2.93   |
　
今回は、下記のような方法で サブドメインでアクセスするタイプになります。
https://admin.ドメイン名/postfixadmin
　
　
　

　
# WEBサーバーの構築
既に構築済みの場合は、読み飛ばしてかまわないです。
##インストール＆サービスの登録

```console:webサーバー
$ sudo yum install -y gcc httpd24 httpd24-devel mod24_ssl libcap-devel
$ sudo yum install -y php56 php56-mbstring php56-mcrypt php56-opcache php56-mysqlnd php56-gd php56-devel php56-imap
$ sudo chkconfig httpd on
```
## mod_ruid2の作成
バーチャルホスト毎に、権限を変えたかったので、mod_ruid2を使います。

まずは、下記のサイトからDLし解凍しましょう。

https://github.com/mind04/mod-ruid2

```console:DLと解凍とビルド
$ wget https://github.com/mind04/mod-ruid2/archive/master.zip
$ unzip master.zip
$ sudo apxs -i -c -l cap mod-ruid2-master/mod_ruid2.c
```

```console:ビルド後
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib64/httpd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib64/httpd/modules/mod_ruid2.so
```
ビルド後、このようなメッセージがでれば、使用可能になります。

通常、自動でhttpd.conf内に書き込まれますが、無い場合、以下の物を書き込んでください。

```apache:/etc/httpd/conf/httpd.conf
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule ruid2_module modules/mod_ruid2.so
```

新規にpostfixadminで使用するバーチャルホストを作ります。

```console:バーチャルホストの作成
$ sudo vim apache:/etc/httpd/conf.d/admin.conf
```

```apache:/etc/httpd/conf.d/admin.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName admin.ドメイン名:443
    DocumentRoot /home/ec2-user/www/admin
    <Directory "/home/ec2-user/www/admin">
      Options -Indexes
      Require all granted
      Allow from all
      AllowOverride All
    </Directory>

    <IfModule mod_ruid2.c>
        RMode    config
        RUidGid  ec2-user ec2-user
        #RGroups  apachetmp
    </IfModule>

    SSLEngine on

    SSLCertificateFile    /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    <FilesMatch "\.(php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    BrowserMatch ".*MSIE.*" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

    CustomLog logs/dmin_www_ssl_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    ErrorLog logs/admin_www_ssl_err
</VirtualHost>
</IfModule>
```

個々の環境に合わせて設定してください。さらに、BASIC認証を付け加えても良いかもしれません。
ちなみに、/home/ec2-user/www/admin の中に、postfixadminを入れます。
ほかにも、phpMyAdminなど、管理者用のwebアプリを入れても良いかもしれません。


/home/ec2-user/www/admin の中に、下記の index.php をアップロードしてください。

```php:index.php
<?php
header('HTTP', true, 404);
?>
404 (Not Found)
```

```console:webサーバーの起動
$ sudo service httpd start
```
https://admin.ドメイン名/

webサーバーを起動後、**404 (Not Found)**が表示されているか確かめてください。
　
　
　
　

# Mysqlの構築
##インストール＆サービスの登録

```console:DB
$ sudo yum install -y mysql56 mysql56-server
$ sudo chkconfig mysqld on
$ sudo service mysqld start
```

### phpMyAdminのすすめ

https://www.phpmyadmin.net/ より、ダウンロード＆解凍し
/home/ec2-user/www/admin へphpMyAdminを入れることをおすすめします。
少し設定するだけで、直ぐに使用できます。詳しい説明は、ググってください。

## メールサーバーで使用する、ユーザーとDBを作成

```sql:ユーザーとDBの作成
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfixのパスワード';
CREATE DATABASE postfix CHARACTER SET utf8;
GRANT ALL ON postfix.* to postfix@localhost;
```

 　
　
　
　

# メールサーバーの構築
##インストール＆サービスの登録

```console:
$ sudo yum install -y postfix　dovecot dovecot-mysql
$ sudo chkconfig postfix on
$ sudo chkconfig dovecot on
```


##MTAの切り変え
```console:
$ sudo alternatives --config mta
  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
```

2番を選択して終わり。
　
## バーチャルドメイン用のユーザとメール用ディレクトリの作成

```console:
$ sudo groupadd -g 10000 vmail
$ sudo useradd -g vmail -u 10000 vmail -d /var/mail
$ sudo mkdir -p /var/mail/vhosts
$ sudo mkdir -p /var/mail/bin
$ sudo mkdir -p /var/mail/deleted-vhosts
$ sudo chmod -R 0700 /var/mail
$ sudo chown -R vmail:vmail /var/mail
```
　

## smtpd用に暗号化ファイルを作る
**dh2048.pem**および**dh512.pem**は、Postfix SMTPサーバがEDH暗号で使うDHパラメータを持つファイル。
**cert.pem**は、PEMフォーマットの、Postfix SMTPサーバRSA証明書を持つファイル。 
**privkey.pem**は、PEMフォーマットでの、Postfix SMTPサーバRSAプライベートキーを持つファイル。
```console:
$ sudo mkdir -p /etc/postfix/ssl/dhparams/
$ sudo openssl dhparam -out /etc/postfix/ssl/dhparams/dh2048.pem 2048
$ sudo openssl dhparam -out /etc/postfix/ssl/dhparams/dh512.pem 512
$ sudo mkdir -p /etc/postfix/ssl/selfsigned/
$ sudo openssl req -new -newkey rsa:4096 -days 3658 -sha256 -nodes -x509 \
      -subj "/C=JP/ST=Shizuoka/L=Shizuoka/O=Mailserver certificate/OU=Mail/CN=www.ドメイン名/emailAddress=admin@ドメイン名" \
      -keyout /etc/postfix/ssl/selfsigned/privkey.pem \
      -out /etc/postfix/ssl/selfsigned/cert.pem
$ sudo chown -R vmail:vmail /var/mail
```
-subj は、個々の環境に合わせてください。


##postfixの設定

### データベースへのアクセス用のクエリ作成

```console:ディレクトリの作成
$ sudo mkdir -p /etc/postfix/mysql
```

#### virtual-alias-maps.cf

```console:virtual-alias-maps.cf
$ sudo vim /etc/postfix/mysql/virtual-alias-maps.cf
```

```conf:/etc/postfix/mysql/virtual-alias-maps.cf
hosts    = localhost
user     = postfix
password = postfixのパスワード
dbname   = postfix

query = SELECT goto FROM alias WHERE address='%s' AND active = 1
```

#### virtual-mailbox-domains.cf

```console:virtual-mailbox-domains.cf
$ sudo vim /etc/postfix/mysql/virtual-mailbox-domains.cf
```

```conf:/etc/postfix/mysql/virtual-mailbox-domains.cf
hosts    = localhost
user     = postfix
password = postfixのパスワード
dbname   = postfix

query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
```

#### virtual-mailbox-maps.cf

```console:virtual-mailbox-maps.cf
$ sudo vim /etc/postfix/mysql/virtual-mailbox-maps.cf
```

```conf:/etc/postfix/mysql/virtual-mailbox-maps.cf
hosts    = localhost
user     = postfix
password = postfixのパスワード
dbname   = postfix

query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
```

#### virtual-mailbox-limit-maps.cf

```console:virtual-mailbox-limit-maps.cf
$ sudo vim /etc/postfix/mysql/virtual-mailbox-limit-maps.cf
```

```conf:/etc/postfix/mysql/virtual-mailbox-limit-maps.cf
user = postfix
password = postfixのパスワード
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
```
　
　
### main.cfの編集

```console:main.cfの編集
$ sudo vim /etc/postfix/main.cf
```

```conf:/etc/postfix/main.cf
myhostname = mail.ドメイン名
mydomain = ドメイン名
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/header_checks
smtpd_banner = $myhostname ESMTP $mail_name
readme_directory = no
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter  = +
biff                 = no
append_dot_mydomain  = no
delay_warning_time   = 4h
disable_vrfy_command = yes
message_size_limit   = 51200000
mailbox_size_limit   = 102400000


#
# ポストマスターに報告されるエラークラスのリスト
# 頻繁に送られて邪魔な場合は、コメントしてOK
#
notify_classes = resource, software
error_notice_recipient     = admin@ドメイン名


#
# Smtp
#
smtp_tls_loglevel            = 1
smtp_tls_security_level      = may
#smtp_tls_CAfile              = 
smtp_tls_protocols           = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers   = high
smtp_tls_exclude_ciphers     = aNULL, eNULL, EXPORT, DES, 3DES, RC2, RC4, MD5, PSK, SRP, DSS, AECDH, ADH
smtp_tls_note_starttls_offer = yes

#
# Smtpd
#
smtpd_tls_loglevel            = 1
smtpd_tls_auth_only           = yes
smtpd_tls_security_level      = may
smtpd_tls_received_header     = yes
smtpd_tls_protocols           = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers   = medium

#smtpd_tls_CAfile              = $smtp_tls_CAfile
smtpd_tls_cert_file           = /etc/postfix/ssl/selfsigned/cert.pem
smtpd_tls_key_file            = /etc/postfix/ssl/selfsigned/privkey.pem
smtpd_tls_dh1024_param_file   = /etc/postfix/ssl/dhparams/dh2048.pem
smtpd_tls_dh512_param_file    = /etc/postfix/ssl/dhparams/dh512.pem

tls_preempt_cipherlist = yes
tls_random_source      = dev:/dev/urandom

smtp_tls_session_cache_database  = btree:${data_directory}/smtp_scache
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
lmtp_tls_session_cache_database  = btree:${data_directory}/lmtp_scache


#
# SASL
#

smtpd_sasl_auth_enable          = yes
smtpd_sasl_type                 = dovecot
smtpd_sasl_path                 = private/auth
smtpd_sasl_security_options     = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain         = $mydomain
smtpd_sasl_authenticated_header = yes

broken_sasl_auth_clients = yes

#
# Virtual mail box
#

virtual_uid_maps        = static:10000
virtual_gid_maps        = static:10000
virtual_minimum_uid     = 10000
virtual_mailbox_base    = /var/mail/vhosts
virtual_transport       = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf
virtual_mailbox_maps    = mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf
virtual_alias_maps      = mysql:/etc/postfix/mysql/virtual-alias-maps.cf

# 容量制限
virtual_create_maildirsize = yes
virtual_mailbox_extended   = yes
virtual_mailbox_limit      = 102400000
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/virtual-mailbox-limit-maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes 


#
# アクセス制限
#

smtpd_recipient_restrictions =
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination,
     reject_unknown_recipient_domain,
     reject_rbl_client all.rbl.jp,
     reject_rbl_client bl.spamcop.net,
     reject_rbl_client zen.spamhaus.org

smtpd_helo_restrictions =
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_invalid_helo_hostname,
     reject_non_fqdn_helo_hostname

smtpd_client_restrictions =
     permit_mynetworks,
     permit_inet_interfaces,
     permit_sasl_authenticated

smtpd_sender_restrictions =
     reject_non_fqdn_sender,
     reject_unknown_sender_domain

```
**mynetworks** は、個々の環境に合わせてください。
　
　
### header_checksの編集
ヘッダチェックファイルの設定をします。

```console:header_checks
$ sudo vim /etc/postfix/header_checks
```

```conf:/etc/postfix/header_checks
/^Received:.*with ESMTPSA/  IGNORE
/^X-Originating-IP:/        IGNORE
/^X-Mailer:/                IGNORE
/^User-Agent:/              IGNORE
```

必要に応じて追加


```console:header_checks
$ sudo postmap /etc/postfix/header_checks
```
### master.cfの編集

```console:header_checks
$ sudo vim /etc/postfix/master.cf
```

```conf:/etc/postfix/header_checks
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_dh1024_param_file=/etc/postfix/ssl/dhparams/dh2048.pem
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
465       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=permit_sasl_authenticated,reject
```
 　
　
　
## Dovecotの設定
### dovecot.confの編集

```console:dovecot.confの編集
$ sudo vim /etc/dovecot/dovecot.conf
```

```conf:/etc/dovecot/dovecot.conf
protocols = imap lmtp
listen = *
#mail_debug = yes
```
最初のうちは、** mail_debug = yes** で様子見したほうが良いかもしれません。
　

### dovecot-sql.conf.extの作成

```console:dovecot.confの編集
$ sudo vim /etc/dovecot/dovecot-sql.conf.ext
```

```conf:/etc/dovecot/dovecot-sql.conf.ext
driver   = mysql
connect  = host=localhost dbname=postfix user=postfix password=postfixパスワード
default_pass_scheme = SHA512-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT CONCAT('/var/mail/vhosts/', maildir) AS mail, 10000 AS uid, 10000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
```

### 10-auth.confの編集

```console:10-auth.confの編集
$ sudo vim /etc/dovecot/conf.d/10-auth.conf
```

```conf:/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
```

### 10-mail.confの編集

```console:10-mail.confの編集
$ sudo vim /etc/dovecot/conf.d/10-mail.conf
```

```conf:/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/vhosts/%d/%n/
maildir_stat_dirs=yes

mail_uid = 10000
mail_gid = 10000

first_valid_uid = 10000
last_valid_uid = 10000

mail_privileged_group = vmail
```

### 10-master.confの編集

```console:10-mail.confの編集
$ sudo vim /etc/dovecot/conf.d/10-master.conf
```

```conf:/etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
  service_count = 0
}

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0666
    user = postfix
    group = postfix
  }
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }

  user = dovecot
}

service auth-worker {
  user = vmail
}
```

### 10-ssl.confの編集

```console:10-ssl.confの編集
$ sudo vim /etc/dovecot/conf.d/10-ssl.conf
```

```conf:/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/postfix/ssl/selfsigned/cert.pem
ssl_key = </etc/postfix/ssl/selfsigned/privkey.pem
ssl_cipher_list = EECDH+AES:EDH+AES+aRSA
ssl_prefer_server_ciphers = yes
ssl_dh_parameters_length = 2048
```

### 15-mailboxes.confの編集


```15-mailboxes.confの編集
$ sudo vim /etc/dovecot/conf.d/15-mailboxes.conf
```

```conf:/etc/dovecot/conf.d/15-mailboxes.conf
namespace inbox {
  mailbox Drafts {
    special_use = \Drafts
    auto=subscribe
  }
  mailbox Junk {
    special_use = \Junk
    auto=subscribe
  }
  mailbox Trash {
    special_use = \Trash
    auto=subscribe
  }
  mailbox Sent {
    special_use = \Sent
    auto=subscribe
  }
}
```

### 20-lmtp.confの編集

```console:20-lmtp.confの編集
$ sudo vim /etc/dovecot/conf.d/20-lmtp.conf
```

```conf:/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
  postmaster_address = postmaster@ドメイン名
  mail_plugins = $mail_plugins
}
```

### auth-sql.conf.extの編集

```console:auth-sql.conf.extの編集
$ sudo vim /etc/dovecot/conf.d/auth-sql.conf.ext
```

```conf:/etc/dovecot/conf.d/auth-sql.conf.ext
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
```
　
## Postfix & Dovecot 起動


```console:
$ sudo service postfix start
$ sudo service dovecot start
```

　
　
　
#postfixadmin

ここではバージョン2.93ですが、最新版を暖ダウンロードしてください。

```console:
$ wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.93/postfixadmin-2.93.tar.gz/download
$ mv ./download postfixadmin-2.93.tar.gz
$ tar xfvz postfixadmin-2.93.tar.gz
$ mv ./postfixadmin-2.93 /home/ec2-user/www/admin/postfixadmin
$ sudo mv /home/ec2-user/www/admin/postfixadmin/ADDITIONS/*.sh /var/mail/bin
$ rm -R /home/ec2-user/www/admin/postfixadmin/ADDITIONS
$ sudo chown -R vmail.vmail /var/mail/bin
$ sudo chmod 0700 /var/mail/bin/postfixadmin/*.sh
```

```php:/home/ec2-user/www/admin/postfixadmin/config.inc.php
$CONF['configured'] = true;
$CONF['default_language'] = 'ja';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixパスワード';
$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'dovecot:SHA512-CRYPT';
$CONF['dovecotpw'] = "doveadm pw -s SHA512-CRYPT";

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

$CONF['mailbox_postcreation_script']='sudo -u vmail /var/mail/bin/postfixadmin-mailbox-postcreation.sh';
$CONF['mailbox_postdeletion_script']='sudo -u vmail /var/mail/bin/postfixadmin-mailbox-postdeletion.sh';
$CONF['domain_postdeletion_script'] ='sudo -u vmail /var/mail/bin/postfixadmin-domain-postdeletion.sh';
```

自動でドメインディレクトリ＆メールボックスディレクトリが作成および削除を、存在のシェルで対応しています。
　
### postfixadmin-mailbox-postcreation.shの編集
/var/mail/vhosts/ドメイン名/、のメールボックスディレクトリを作成するシュル。

```console:
$ sudo vim /var/mail/bin/postfixadmin-mailbox-postcreation.sh
```

```shell:/var/mail/bin/postfixadmin-mailbox-postcreation.sh
basedir=/var/mail/vhosts
mkdir -p -m 0700 "${parent}"
#maildirmake "$maildir"
mkdir -p -m 0700 $maildir/{new,cur,tmp,.Drafts,.Junk,.Trash,.Sent}
```
　
### postfixadmin-mailbox-postdeletion.shの編集
/var/mail/vhosts/ドメイン名/、のメールボックスディレクトリを削除するシュル。

```console:
$ sudo vim /var/mail/bin/postfixadmin-mailbox-postdeletion.sh
```

```shell:/var/mail/bin/postfixadmin-mailbox-postdeletion.sh
basedir=/var/mail/vhosts
trashbase=/var/mail/deleted-vhosts
```
　


### postfixadmin-domain-postdeletion.shの編集
**/var/mail/vhosts** 内のドメイン名のディレクトリを削除するシュル。
削除された、ドメインディレクトリは、**/var/mail/deleted-vhosts** へ日付付きで移動されます。

```console:
$ sudo vim /var/mail/bin/postfixadmin-domain-postdeletion.sh
```

```shell:/var/mail/bin/postfixadmin-domain-postdeletion.sh
basedir=/var/mail/vhosts
trashbase=/var/mail/deleted-vhosts
```


後の設定と構築は、ググると沢山出てくるので、後はお任せします。 
　
　
　
## 接続テスト

```console:コンソール１
$ sudo tail -f /var/log/maillog
```
2画面でログを見ながらテストすることをおすすめします。下記の５つのテストで、とくに問題が無ければ、PostfixとDovecotの設定は終了です。

### SMTP port:25
```console:コンソール2
$ telnet ドメイン名 25
Trying 52.196.8.213...
Connected to ドメイン名.
Escape character is '^]'.
220 ドメイン名 ESMTP Postfix
ehlo localhost
...　省略
quit
221 2.0.0 Bye
Connection closed by foreign host.
```

### SMTP SSL/TLS port:465 
```console:コンソール2
$ openssl s_client -connect ドメイン名:465 -tlsextdebug
CONNECTED(00000003)
...　省略
220 ドメイン名 ESMTP Postfix
quit
221 2.0.0 Bye
closed
```

### SMTP STARTTLS port:587

```console:コンソール2
$ openssl s_client -connect ドメイン名:587 -starttls smtp -tlsextdebug
CONNECTED(00000003)
...　省略
250 DSN
quit
221 2.0.0 Bye
closed
```

### IMAP STARTTLS  port:143 

```console:コンソール2
$ openssl s_client -connect ドメイン名:143 -starttls imap -tlsextdebug
CONNECTED(00000003)
...　省略
. OK Pre-login capabilities listed, post-login capabilities have more.
1 logout
closed
```

### IMAP SSL/TLS  port:993 

```console:コンソール2
$ openssl s_client -connect ドメイン名:993 -tlsextdebug
CONNECTED(00000003)
...　省略
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
1 logout
closed
```
　
　
　



# 最後に
これで、無事メールの送受信ができるようになりました。
https://admin.ドメイン名/postfixadmin
　
メールソフト**Thunderbird**を使用したところ、自動設定で難なくメールの送受信ができました。
　

以上で終わりになります。