メールサーバーは、パブリッククラウドのSaaSサービスを利用する方が圧倒的に楽です。メールサーバーの面倒を見るのはしんどい(特に相手にメールが届いていないとかの個別の問い合わせ...)のですが、それでもオンプレミスでメールサーバーを構築する必用がある場合があります。今回は、RockyLinux10.xを利用して、Posftfix Adminを利用したマルチドメインに対応したメールサーバーを構築します。
Dovecot2.4での実装となります。
予め以下のソフトウェアをインストールしておいてください
- OpenSSL
- Apache2.4
- PHP8.x
- MariaDB
1.ユーザーを作成しUIDとGIDを確認する
useradd mailbox
cat /etc/passwd | grep mailbox
2.dovecotを導入する
最初に、PAM、OpenLdapをインストールしておく
既存パッケージを消す
dnf remove dovecot
必要なパッケージをインストールする
#lmdbは、berklaydbの代わり
dnf install -y pam-devel lmdb openssl-devel
ユーザーを作成する
useradd dovecot
dovecotをインストールする
cd /usr/local/src
curl -LO https://dovecot.org/releases/2.4/dovecot-2.4.5.tar.gz
tar xvzf dovecot-2.4.5.tar.gz
cd dovecot-2.4.5
#OpenSSLのライブラリがうまく見えないときはこちらを実行
#export PKG_CONFIG_PATH=/usr/local/python-3.13.1/lib/pkgconfig:/usr/local/ssl/lib/pkgconfig:/usr/local/lib/pkgconfig
#export LD_RUN_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/ssl/lib:/usr/lib:/usr/lib64
ln -s /usr/local/ssl/lib/libcrypto.so.3 /usr/local/lib/libcrypto.so.3
./configure \
--with-pam \
--with-sql=yes \
--with-mysql \
--with-zlib \
--with-ssl=openssl \
--without-icu \
--with-ssldir=/usr
#--with-pgsql \
make -j 6
make install
サービスの設定行う
cat > /usr/lib/systemd/system/dovecot.service << EOF
[Unit]
Description=Dovecot IMAP/POP3 email server
After=local-fs.target network.target network-online.target
[Service]
Type=simple
#ExecStartPre=/usr/libexec/dovecot/prestartscript
ExecStart=/usr/local/sbin/dovecot -F
ExecReload=/bin/kill -HUP \$MAINPID
PrivateTmp=true
NonBlocking=yes
[Install]
WantedBy=multi-user.target
EOF
設定ファイルを用意する
mkdir -p /usr/local/etc/dovecot
mkdir -p /usr/local/etc/dovecot/conf.d
3.dovecotの設定を行う
dovecot.conf
cat > /usr/local/etc/dovecot/dovecot.conf << EOF
dovecot_config_version = 2.4.5
dovecot_storage_version = 2.4.5
protocols = imap pop3
default_login_user = mailbox
default_internal_user = mailbox
!include conf.d/10-mail.conf
!include conf.d/10-auth.conf
!include conf.d/10-ssl.conf
!include conf.d/10-master.conf
!include conf.d/10-logging.conf
!include conf.d/90-quota.conf
!include conf.d/20-imap.conf
!include conf.d/20-pop3.conf
!include conf.d/95-quota-clone.conf
EOF
dovecot-dict-sql.conf.ext
cat > /usr/local/etc/dovecot/dovecot-dict-sql.conf.ext << EOF
# Conversion performed at 2026-10-31 02:05:12.534149
dict_server {
dict sql {
sql_driver = mysql
mysql localhost {
dbname = postfixadmin
password = password
port = 3306
user = postfixadmin
}
}
}
EOF
10-auth.conf
cat > /usr/local/etc/dovecot/conf.d/10-auth.conf
auth_allow_cleartext = yes
auth_mechanisms = plain login
passdb_default_password_scheme = PLAIN
#!include conf.d/auth-sql.conf.ext
!include auth-sql.conf.ext
EOF
10-logging.conf
log_path = syslog
EOF
10-mail.conf
cat > /usr/local/etc/dovecot/conf.d/10-mail.conf << EOF
mail_driver = maildir
mail_path = /home/mailbox/%{user | domain}/%{user | username}/
mail_uid = 1003 #mailboxのユーザID
mail_gid = 1003 #mailboxのグループID
mail_access_groups = mailbox
namespace inbox {
inbox = yes
mailbox Trash {
quota_storage_extra = 100M
}
}
mailbox_list_index = yes
EOF
10-master.conf
cat > /usr/local/etc/dovecot/conf.d/10-master.conf << EOF
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 auth-userdb {
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
service stats {
unix_listener stats-reader {
user = mailbox
group = mailbox
mode = 0660
}
unix_listener stats-writer {
user = mailbox
group = mailbox
mode = 0660
}
}
service dict {
unix_listener dict {
mode = 0660
user = mailbox
group = mailbox
}
}
EOF
10-ssl.conf
cat > /usr/local/etc/dovecot/conf.d/10-ssl.conf << EOF
ssl = yes
ssl_server_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/example.com/privkey.pem
EOF
20-imap.conf
cat > /usr/local/etc/dovecot/conf.d/20-imap.conf << EOF
protocol imap {
mail_plugins {
imap_quota = yes
}
}
EOF
20-pop3.conf
cat > /usr/local/etc/dovecot/conf.d/20-pop3.conf << EOF
# POP3 UIDL format not explicitly set in original configuration.
# Verify no UIDL changes before production cutover.
EOF
90-quota.conf
cat > /usr/local/etc/dovecot/conf.d/90-quota.conf << EOF
mail_plugins {
quota = yes
}
# Default is overridden per user from MySQL mailbox.quota (bytes).
quota_storage_size = 1G
quota_message_count = 100000000
quota "User quota" {
driver = count
warning warn-95 {
quota_storage_percentage = 95
execute quota-warning {
args = 95 %{user}
}
}
warning warn-80 {
quota_storage_percentage = 80
execute quota-warning {
args = 80 %{user}
}
}
}
# Original warning service was commented out. Enable only after installing script.
# service quota-warning {
# executable = script /usr/local/bin/quota-warning.sh
# user = mailbox
# unix_listener quota-warning { }
# }
EOF
95-quota-clone.conf
cat > << EOF
# Dovecot 2.4.x quota clone -> PostfixAdmin quota2 table.
# Uses the mysql connection in auth-sql.conf.ext (sql_driver/mysql localhost).
# Requires quota_clone plugin and dict SQL support in the installed build.
# quota2 table requires username (unique), bytes, messages columns.
mail_plugins {
quota_clone = yes
}
dict_server {
dict mysql {
driver = sql
sql_driver = mysql
dict_map priv/quota/storage {
sql_table = quota2
username_field = username
value_field bytes {
}
}
dict_map priv/quota/messages {
sql_table = quota2
username_field = username
value_field messages {
}
}
}
}
quota_clone {
dict proxy {
name = mysql
}
}
EOF
/usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
cat > /usr/local/etc/dovecot/conf.d/auth-sql.conf.ext << EOF
sql_driver = mysql
# Password placeholder: replace with original DB credential in root-only file.
mysql localhost {
user = postfixadmin
password = password
dbname = postfixadmin
port = 3306
}
#SQL内にmailboxのUID/GID指定があるので注意してください
passdb sql {
query = SELECT password, 1003 AS userdb_uid, 1003 AS userdb_gid, \
CONCAT(CAST(mailbox.quota AS CHAR), 'B') AS userdb_quota_storage_size \
FROM mailbox, domain WHERE username = '%{user}' \
AND mailbox.domain = domain.domain AND mailbox.active = '1' AND domain.active = '1'
}
userdb sql {
query = SELECT CONCAT('/home/mailbox/', maildir) AS home, 1003 AS uid, 1003 AS gid, \
CONCAT(CAST(mailbox.quota AS CHAR), 'B') AS quota_storage_size \
FROM mailbox, domain WHERE username = '%{user}' \
AND mailbox.domain = domain.domain AND mailbox.active = '1' AND domain.active = '1'
iterate_query = SELECT username AS user FROM mailbox
}
EOF
dovecot-sql.conf.ext
cat > /usr/local/etc/dovecot/conf.d/dovecot-sql.conf.ext << EOF
# Conversion performed at 2026-10-31 02:18:31.753180
sql_driver = mysql
#ここでは1003を指定している部分は、冒頭に作成したmailboxユーザーのUIDとGIDを入れる
passdb sql {
default_password_scheme = PLAIN
sql_query = SELECT password, 1003 AS userdb_uid, 1003 AS userdb_gid, CONCAT('*:bytes=', CAST(mailbox.quota AS CHAR)) AS userdb_quota_rule FROM mailbox, domain WHERE username = '%{user}' AND mailbox.domain = domain.domain AND mailbox.active = '1' AND domain.active = '1'
}
userdb sql {
sql_iterate_query = SELECT username FROM mailbox
sql_query = SELECT concat('/home/mailbox/', maildir) AS home, 1003 AS uid, 1003 AS gid, CONCAT('*:bytes=', CAST(mailbox.quota AS CHAR)) AS quota_rule FROM mailbox, domain WHERE username = '%{user}' AND mailbox.domain = domain.domain AND mailbox.active = '1' AND domain.active = '1'
}
mysql localhost {
dbname = postfixadmin
password = パスワード
port = 3306
user = postfixadmin
EOF
権限を設定変更する
#mkdir -p /usr/local/var/run/dovecot/stats-writer
#chmod -R 777 /usr/local/var/run/dovecot/stats-writer
chmod -R 777 /usr/local/var/run/dovecot
4.icu4cをインストールする
こちらは、PHPのライブラリと共に入れているのでスキップ
こちらを参照して頂き。PHPと共にインストールを行ってください
https://qiita.com/shadowhat/items/b46624c0bee1b9a59422
5.Postfixを導入する
以下のコマンドを実行
useradd postfix
groupadd postdrop
chown -R mailbox:mailbox /home/mailbox
chmod -R 755 /home/mailbox
Postfix をインストールする
ln -s /usr/local/pgsql/lib/libpq.so.5 /lib64/libpq.so.5
ln -s /usr/local/mysql/lib/libmariadb.so.3 /lib64/libmariadb.so.3
#インストールしたバージョンに合わせたライブラリのシンボリックリンクを張る
ln -s /usr/local/lib/libicuuc.so.76 /lib64/libicuuc.so.76
ln -s /usr/local/lib/libicudata.so.76 /lib64/libicudata.so.76
cd /usr/local/src
curl -LO https://mirror.reverse.net/pub/postfix-release/official/postfix-3.11.7.tar.gz
tar xvzf postfix-3.11.7.tar.gz
cd postfix-3.11.7
export PKG_CONFIG_PATH=/usr/local/ssl/lib:/usr/local/lib:/usr/local/lib64:/usr/lib
make -f Makefile.init makefiles \
'CCARGS=-DNO_EAI -DNO_DB -DNO_NIS -DUSE_TLS -DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/local/mysql/include/mysql -DHAS_LMDB' \
'AUXLIBS=-lssl -lcrypto -lsasl2 -lcrypt' \
'AUXLIBS_MYSQL=-L/usr/local/mysql/lib -lmysqlclient -lz -lm' \
'AUXLIBS_LMDB=-llmdb' \
'AUXLIBS_PGSQL=-L/usr/local/pgsql/lib -lpq'
'AUXLIBS_PGSQL=-lpq' \
default_database_type=lmdb \
default_cache_db_type=lmdb
systemctl enable dovecot
systemctl start dovecot
起動スクリプトを配置する
cat > /usr/lib/systemd/system/postfix.service << EOF
[Unit]
Description=Postfix Mail Transport Agent
After=syslog.target network.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
EnvironmentFile=-/etc/sysconfig/network
PrivateTmp=true
CapabilityBoundingSet=~ CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE
ProtectSystem=true
PrivateDevices=true
ExecStartPre=-/usr/libexec/postfix/aliasesdb
ExecStartPre=-/usr/libexec/postfix/chroot-update
ExecStart=/usr/sbin/postfix start
ExecReload=/usr/sbin/postfix reload
ExecStop=/usr/sbin/postfix stop
[Install]
WantedBy=multi-user.target
EOF
起動するための準備をする
#aliasdbの作成
newaliases
#SELinuxの設定を入れる
restorecon -RFv /var/spool/postfix
7.postsrsdのインストール
libseccompを入れる
dnf install -y libseccomp-devel
cd /usr/local/src
curl -LO https://github.com/roehling/postsrsd/archive/refs/tags/2.4.1.tar.gz
tar xvzf 2.4.1.tar.gz
cd postsrsd-2.4.1
mkdir build
cd build
cmake .. -DWITH_SECCOMP=ON
make
make install
以下の秘密鍵を必ず保管しておく
/usr/local/etc/postsrsd.secret
#設定ファイルをコピー
cp -a \
/usr/local/share/doc/postsrsd/postsrsd.conf \
/usr/local/etc/postsrsd.conf
設定ファイルを変更します
vi /usr/local/etc/postsrsd.conf
#このドメインから送られたものは変換しない
domains = {
"d1.example.com",
"doman2.example.com",
"example.com",
}
#メールサーバのFQDN
srs-domain = "smtpserver.exaple.com"
socketmap = unix:/var/spool/postfix/srs
secrets-file = "/usr/local/etc/postsrsd.secret"
original-envelope = embedded
unprivileged-user = "nobody"
chroot-dir = "/usr/local/var/lib/postsrsd"
ファイル権限を設定する
chown root:root /usr/local/etc/postsrsd.secret
chmod 600 /usr/local/etc/postsrsd.secret
起動設定を行う
systemctl daemon-reload
systemctl enable postsrsd
systemctl start postsrsd
systemctl status postsrsd --no-pager
8.PostfixAdminを導入する
以下よりダウンロードして、必用な場所に配置する
cd /usr/local/src
curl -LO https://github.com/postfixadmin/postfixadmin/releases/download/v4.0.5/postfixadmin-v4.0.5-php84.tar.gz
tar xvzf postfixadmin-v4.0.5-php84.tar.gz
mv ostfixadmin-v4.0.5-php84 /docs
「config.inc.php」を以下の通り設定を入れる
$CONF['configured'] = true;
$CONF['setup_password'] = 'password'; //ハッシュ値を書く
$CONF['default_language'] = 'ja';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = '127.0.0.1';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfixadmin';
//$CONF['database_socket'] = '/opt/mariadb/mysql.sock';
$CONF['database_port'] = '3306';
$CONF['encrypt'] = 'cleartext'; #必用に応じて変更(md5crypt/md5/system/mysql_encrypt/authlib)
$CONF['dovecotpw'] = "/usr/local/bin/doveadm pw"; # debian
$CONF['show_password'] = 'YES';
$CONF['page_size'] = '100';
$CONF['password_validation'] = array(
# '/regular expression/' => '$PALANG key (optional: + parameter)',
// '/.{5}/' => 'password_too_short 5', # minimum length 5 characters
// '/([a-zA-Z].*){3}/' => 'password_no_characters 3', # must contain at least 3 characters
// '/([0-9].*){2}/' => 'password_no_digits 2', # must contain at least 2 digits
/* support a 'callable' value which if it returns a non-empty string will be assumed to have failed, non-empty string should be a PALANG key */
// 'length_check' => function($password) { if (strlen(trim($password)) < 3) { return 'password_too_short'; } },
);
// パスワードチェックをしないようにコメントアウトする
$CONF['default_aliases'] = array (
// 'abuse' => 'abuse@change-this-to-your.domain.tld',
// 'hostmaster' => 'hostmaster@change-this-to-your.domain.tld',
// 'postmaster' => 'postmaster@change-this-to-your.domain.tld',
// 'webmaster' => 'webmaster@change-this-to-your.domain.tld'
);
// コメントアウトする
$CONF['quota'] = 'YES';
$CONF['used_quotas'] = 'YES';
$CONF['vacation'] = 'YES';
$CONF['mailbox_postcreation_script'] = '/docs/mail.example.com/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh';
$CONF['mailbox_postedit_script'] = '';
$CONF['mailbox_postdeletion_script'] = '/docs/mail.example.com/postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh';
$CONF['domain_postdeletion_script'] = '/docs/vela.example.compostfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh';
以下の③つのファイルの「basedir」を「/var/spool/maildirs」から「/home/mailbox」に変更する
vi postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh
vi postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh
vi postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh
Webサーバーには、Postfixのディレクトリ配下に「public」を公開する
ディレクトリを作成する
cd postfixadmin
mkdir templates_c
chown daemon:daemon templates_c
chmod -R 666 templates_c
9. PostfixAdminの設定ファイルを渡す
cat > /etc/postfix/virtual-alias-maps.cf << EOF
hosts = localhost
user = postfix
password = postfix
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
EOF
cat > /etc/postfix/virtual-mailbox-domains.cf << EOF
hosts = localhost
user = postfix
password = postfix
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
EOF
cat > /etc/postfix/virtual-mailbox-maps.cf << EOF
hosts = localhost
user = postfix
password = postfix
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
EOF
cat > /etc/postfix/virtual-mailbox-limit-maps.cf << EOF
hosts = localhost
user = postfix
password = postfix
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
EOF
main.cfを編集する
vi /etc/postfix/main.cf
#コメントを外す
inet_interfaces = all
#空で設定
mydestination =
#smtputf8を拒否
smtputf8_enable = no
#メール添付サイズ
message_size_limit = 40960000
#
# TLS
#
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_tls_security_level = may
#↓TLSを強制する場合
#smtpd_enforce_tls = yes
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
# Its DSA counterparts:
#smtpd_tls_dcert_file = /etc/postfix/server-dsa.pem
#smtpd_tls_dkey_file = $smtpd_tls_dcert_file
# CA関係の設定を変更
# smtpd_tls_CAfile = /etc/postfix/CAcert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/example.com/fullchain.pem
#smtpd_tls_CApath = /etc/postfix/certs
smtpd_tls_CApath = /etc/letsencrypt/live/example.com
# ログレベルの変更(最低レベル)
# 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て
# smtpd_tls_loglevel = 0
smtpd_tls_loglevel = 2
smtp_tls_security_level = may
#
# 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
#リレー設定
#smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes
#
# Virtual mail box
#
#mailboxのuid/gidを入れる
virtual_uid_maps = static:1003 #/home/mailboxのユーザーID
virtual_gid_maps = static:1003 #/home/mailboxのグループID
virtual_minimum_uid = 1003
virtual_mailbox_base = /home/mailbox
#virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_transport = dovecot
virtual_mailbox_domains = mysql:/etc/postfix/virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/virtual-alias-maps.cf
# 容量制限
#vdaパッチ適用時だけ利用
#virtual_create_maildirsize = yes
#virtual_mailbox_extended = yes
#virtual_mailbox_limit = 102400000
#virtual_mailbox_limit_maps = pgsql:/etc/postfix/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
#doveot transfer stop
dovecot_destination_recipient_limit = 1
#
# postsrsd
#
sender_canonical_maps = socketmap:unix:srs:forward
sender_canonical_classes = envelope_sender
recipient_canonical_maps = socketmap:unix:srs:reverse
recipient_canonical_classes = envelope_recipient
master.confを編集する
vi /etc/postfix/master.cf
以下のコメントを外す(+部分のコメントを外す)
#127.0.0.1:submission inet n - n - - smtpd
*submission inet n - n - - smtpd
* -o syslog_name=postfix/submission
# -o smtpd_forbid_unauth_pipelining=no
* -o smtpd_tls_security_level=encrypt
* -o smtpd_sasl_auth_enable=yes
* -o smtpd_tls_auth_only=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_hide_client_session=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
* -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
* -o milter_macro_daemon_name=ORIGINATING
# Choose one: enable submissions for loopback clients only, or for any client.
#127.0.0.1:submissions inet n - n - - smtpd
*submissions inet n - n - - smtpd
* -o syslog_name=postfix/submissions
# -o smtpd_forbid_unauth_pipelining=no
* -o smtpd_tls_wrappermode=yes
* -o smtpd_sasl_auth_enable=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_hide_client_session=yes
* -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
* -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
* -o milter_macro_daemon_name=ORIGINATING
##一番下に追記する
dovecot unix - n n - - pipe
flags=DRhu user=mailbox:mailbox argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}
10. PostfixAdminを設定する
ブラウザーで、「https://example.com/postfixadmin/public/setup.php」を開く
Generate setup_passwordで出力されたセットアップパスワードハッシュを「config .inc.php」に追記します。
$CONF['setup_password'] = 'password'; //ハッシュ値を書く
あとは、ドメイン作成と、メールボックスの作成をしてメールの送信テストを行います。
なお、作成するドメインのMXレコードの作成も先に行っておいてください。

