1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Postfix+PostfixAdminでマルチドメイン対応のメールサーバーを作成する for RockyLinux 10.x

1
Last updated at Posted at 2026-10-31

メールサーバーは、パブリッククラウドのSaaSサービスを利用する方が圧倒的に楽です。メールサーバーの面倒を見るのはしんどい(特に相手にメールが届いていないとかの個別の問い合わせ...)のですが、それでもオンプレミスでメールサーバーを構築する必用がある場合があります。今回は、RockyLinux10.xを利用して、Posftfix Adminを利用したマルチドメインに対応したメールサーバーを構築します。
Dovecot2.4での実装となります。

予め以下のソフトウェアをインストールしておいてください

  • OpenSSL
  • Apache2.4
  • PHP8.x
  • MariaDB

1.ユーザーを作成しUIDとGIDを確認する

bash
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をインストールする

bash
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

/usr/local/etc/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

/usr/local/etc/dovecot/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/10-logging.conf
log_path = syslog
EOF

10-mail.conf

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/usr/local/etc/dovecot/conf.d/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

/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

/usr/local/etc/dovecot/conf.d/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の設定ファイルを渡す

virtual-alias-maps.cf
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
virtual-mailbox-domains.cf
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
virtual-mailbox-maps.cf
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
virtual-mailbox-limit-maps.cf
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」を開く

image.png

Generate setup_passwordで出力されたセットアップパスワードハッシュを「config .inc.php」に追記します。

config.inc.php
$CONF['setup_password'] = 'password'; //ハッシュ値を書く

再度、ブラウザーを更新し「setup.php」を開きます。
image.png

あとは、ドメイン作成と、メールボックスの作成をしてメールの送信テストを行います。
なお、作成するドメインのMXレコードの作成も先に行っておいてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?