EC2 Centos7 で、Postfix、Dovecot、Postfixadmin の構築

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

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

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

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

　
# Webサーバーで扱う管理者の作成と権限
主に、phpAdmin、postfixadminなどで使用する

```console:リポジトリ追加
$ sudo groupadd -g 20000 webadmin
$ sudo useradd -g webadmin -u 20000 webadmin 
$ sudo passwd webadmin
$ sudo -u webadmin mkdir -p /home/webadmin/www/public_html
$ sudo chown -R webadmin:webadmin /home/webadmin/www
```

### webadminユーザーは、sudoでvmailユーザーのみ「sudo -u vmail」になれるようにする。
```console:
$ sudo vim /etc/sudoers.d/webadmin
```

```conf:/etc/sudoers.d/webadminの作成
# phpでexec()でsudoコマンドを有効にさせるために追加します。
Defaults:webadmin !requiretty
webadmin          ALL=(vmail)  NOPASSWD:ALL
```


### suコマンドは、wheelグループに所属しているユーザのみ扱えるようにする。

```console:
$ sudo vim /etc/login.defs
```

末尾に追加

```console:/etc/login.defsの編集
SU_WHEEL_ONLY yes
```

ファイルの編集

```console:
$ sudo vim /etc/pam.d/su
```

コメントを外す

```console:/etc/pam.d/suの編集
auth required /lib/security/pam_wheel.so use_uid 
```
　
　
　
　

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

### リポジトリ追加
php7を入れるのに必要。現時点でデフォルトで5.4

```console:リポジトリ追加
$ sudo yum install epel-release
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

### Apache & php7

```console:webサーバー
$ sudo yum install -y gcc httpd httpd-devel mod_ssl libcap-devel
$ sudo yum install --enablerepo=remi,remi-php70 php php-mbstring php-mcrypt php-opcache php-mysqlnd php-gd php-devel php-imap php-gd php-pdo php-pear
$ sudo systemctl enable httpd.service
```

### phpの設定

```console:webサーバー
$ sudo vim /etc/php.ini
```

```conf:/etc/php.ini
date.timezone = 'Asia/Tokyo'
include_path = ".:/usr/share/php:/usr/share/pear"
```


## mod_ruid2の作成
バーチャルホスト毎に、権限を変えたかったので、mod_ruid2を使います。
※mod_ruid2を有効にするには、**SELinuxは無効にしてください**。

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

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


```console:インストールしていない場合
$ sudo yum install wget unzip
```

```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 /etc/httpd/conf.d/admin.conf
```

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

    <IfModule mod_ruid2.c>
        RMode    config
        RUidGid  webadmin webadmin
        #RGroups  apachetmp
    </IfModule>

    SSLEngine on

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

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

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


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

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

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

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

# Mysql5.6の構築
##インストール＆サービスの登録

### リポジトリの追加

php5.6を入れるのに必要。現時点でデフォルトで5.5になります。

```console:リポジトリの追加
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
```

```console:DB
$ sudo yum -y install mysql-community-server mysql mysql-devel mysql-server mysql-utilities
$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service
```

```console:DB
$ mysql -u root
```

### 初期設定
rootパスワードをきめ、匿名ユーザーの削除します。

```console:DB
mysql> UPDATE mysql.user SET Password=PASSWORD('ルートパスワード') WHERE User='root';
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
```
### phpMyAdminのすすめ

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

## メールサーバーで使用する、ユーザーとDBを作成
接続済みです。

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

 　
　
　
　

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

```console:
$ sudo yum install -y postfix　dovecot dovecot-mysql
$ sudo systemctl enable postfix.service
$ sudo systemctl enable dovecot.service
```


##MTAの切り変え
初期状態で、**sendmail.postfix** なので、切り替える必要は無いです。

　
## バーチャルドメイン用のユーザとメール用ディレクトリの作成

```console:
$ sudo groupadd -g 10000 vmail
$ sudo useradd -g vmail -u 10000 vmail /var/vmail
$ sudo mkdir -p -m 0700 /var/vmail/{vhosts,bin,deleted-vhosts}
$ sudo chown -R vmail:vmail /var/vmail
```
　

## 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
```

-subj は、個々の環境に合わせてください。


##postfixの設定

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

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

#### virtual-alias-maps.cf


```console:
$ 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
recipient_delimiter  = +
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/header_checks
smtpd_banner = ESMTP $mail_name
readme_directory = no
mailbox_command = procmail -a "$EXTENSION"

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/vmail/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 = pop3 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/vmail/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/vmail/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 pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

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

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

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

  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_dh_parameters_length = 2048
ssl_cipher_list = EECDH+AES:EDH+AES+aRSA
ssl_prefer_server_ciphers = yes
```

### 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
}
```

　
## Postfix & Dovecot 起動


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

　
　
　
#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/webadmin/www/public_html/postfixadmin
$ sudo mv /home/webadmin/www/public_html/postfixadmin/ADDITIONS/*.sh /var/vmail/bin
$ rm -R /home/webadmin/www/public_html/postfixadmin/ADDITIONS
$ sudo chown -R vmail:vmail /var/vmail/bin/
$ sudo sh -c "chmod 0700 /var/vmail/bin/*.sh"
```


### config.inc.phpの編集
```php:/home/webadmin/www/public_html/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/vmail/bin/postfixadmin-mailbox-postcreation.sh';
$CONF['mailbox_postdeletion_script']='sudo -u vmail /var/vmail/bin/postfixadmin-mailbox-postdeletion.sh';
$CONF['domain_postdeletion_script'] ='sudo -u vmail /var/vmail/bin/postfixadmin-domain-postdeletion.sh';
```

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

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

```shell:/var/vmail/bin/postfixadmin-mailbox-postcreation.sh
basedir=/var/vmail/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/vmail/vhosts/ドメイン名/、のメールボックスディレクトリを削除するシュル。

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

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

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

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

```shell:/var/vmail/bin/postfixadmin-domain-postdeletion.sh
basedir=/var/vmail/vhosts
trashbase=/var/vmail/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
```

### POP3 STARTTLS  port:110 

```console:コンソール2
$ openssl s_client -connect ドメイン名:110 -starttls pop3 -tlsextdebug
CONNECTED(00000003)
...　省略
---
+OK Dovecot ready.
quit
closed
```


### POP3 SSL/TLS  pop3:995

```console:コンソール2
$ openssl s_client -connect ドメイン名:995 -tlsextdebug
CONNECTED(00000003)
...　省略
+OK Dovecot ready.
quit
closed
```
　
　
　



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

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