postfixとdovecotでメールサーバーを構築していきます

ファイアウォールの設定
conohaVPNのファイアウォール設定
現状conohaのセキュリティ設定でメールに使用するポートが開いていないので、開けます
SMTP(25番ポート)SMTPS(465 番ポート)と IMAPS(993 番ポート)を開けるようにします
デフォルトで用意されているメールグループ「IPv4v6-Mail」がありますがPOPのポート番号も入ってしまっているので新たに作成します
「セキュリティグループタブ」の「+セキュリティグループ」をクリックして新しいセキュリティグループを作成します
・セキュリティグループ名:IPv4v6-PostfixDovecot(任意で決めて大丈夫です)
・追加する通信
IN IPv4 TCP 25 0.0.0.0/0
IN IPv6 TCP 25 ::/0
IN IPv4 TCP 465 0.0.0.0/0
IN IPv6 TCP 465 ::/0
IN IPv4 TCP 993 0.0.0.0/0
IN IPv6 TCP 993 ::/0

作成後、[サーバー]-[ネットワーク情報]に作成したセキュリティグループを適用します

nftablesの設定変更
OS側はnftablesを使用しています
こちらもポートを開けていない場合は開けましょう
※ メール送受信は国内からのみ実施するため、SMTPSとIMAPSは国内用フィルターの「domestic」に設定しています
# vi /etc/nftables/filter.nft
table inet filter {
chain TCP {
# 管理者にのみ解放
# ssh, OLS 管理画面
tcp dport { 22 , 7080 } ip saddr @admin accept ←7080を追加する
# 日本国内にのみ開放
# SMTPS, IMAPS
tcp dport { 465, 993 } ip saddr @domestic accept
# 全開放
# SMTP, HTTP, HTTPS
tcp dport { 25, 80, 443 } accept ←80、443を追加する
}
chain UDP {
# 全開放
# http/3
udp dport { 443 } accept ←443を追加する
}
}
サービスを再起動します
# systemctl restart nftables
DNS設定
AレコードとMXレコードを登録します
conohaDNSを使っているのでそちらに設定しています
メールサーバーのホスト名はmail.[ドメイン名]としますのでそれをAレコードに登録します
MXレコードのポイント先にもホスト名を指定します
TTLはデフォルト値の3600を採用しようと思うので、空欄のまま登録します
■Aレコード
タイプ:A
名称:mail
値:サーバーのIPアドレス
■MXレコード
タイプ:MX
名称:@
ポイント先:mail.[ドメイン名]
優先度:10

メールユーザーとデータベース準備
メール用ユーザーを作成します
# groupadd -g 10000 vmail # useradd -g 10000 -u 10000 -s /sbin/nologin vmail
phpMyAminにログインし、ユーザーアカウントを作成します

postfixユーザーを作成します
ユーザー名:postfix
パスワード:任意の値を入力
同名のデータベースを作成してすべての権限を与える。:チェックを入れる

PostfixAdminのインストール
インストール
PostfixAdminの最新版をインストールします
下記のページによると「3.3.13」が最新版であることがわかります
Releases · postfixadmin/postfixadmin (github.com)
同ページにある最新版のzipをダウンロードします
# wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.13.zip # unzip postfixadmin-3.3.13.zip
webサーバーはOpenLiteSpeedで構築していますので、postfixAdminの置き場や所有者をそれに合わせて変更しています(環境によってそれぞれ変更してください)
# mv postfixadmin-postfixadmin-3.3.13 /usr/local/lsws/[ドメイン名]/postfixAdmin ← postfixAdminの置き場を指定 # mkdir /usr/local/lsws/[ドメイン名]/postfixAdmin/templates_c # chown nobody. /usr/local/lsws/[ドメイン名]/postfixAdmin -R # rm -f postfixadmin-3.3.13.zip
PostfixAdmin で php-imap を使用するそうなのでインストールします
lsphpは8.2を使用していますのでlsphp82-imapをインストールしています
# dnf install lsphp82-imap
スクリプト設定
メールアドレスとドメインそれぞれ削除したときに実行されるスクリプトの編集を実施します
(ディレクトリ自動作成のスクリプトはDovecot側で設定するのでここではやりません)
ユーザーディレクトリ内にbinフォルダを作成し、そこにスクリプトを設置します
# mkdir /home/vmail/bin
スクリプトを作成したフォルダにコピーします
# cp /usr/local/lsws/[ドメイン名]/postfixAdmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /home/vmail/bin/ # cp /usr/local/lsws/[ドメイン名]/postfixAdmin/ADDITIONS/postfixadmin-domain-postdeletion.sh /home/vmail/bin/
スクリプト置き場のアクセス権を変更します
先ほど同様OpenLiteSpeedの環境に合わせてますのでグループ名は必要に応じて変更して下さい
また、スクリプトが実行できるように実行権限を付与します
# chown vmail:nobody -R /home/vmail/bin/ # chmod 700 /home/vmail/bin/*.sh
削除したメールボックスの格納先を作成します
# mkdir /home/vmail/.deleted-maildirs # chown vmail. /home/vmail/.deleted-maildirs/
postfixadmin-mailbox-postdeletion.shを編集します
# vi /home/vmail/bin/postfixadmin-mailbox-postdeletion.sh
# Change this to where you keep your virtual mail users' maildirs.
#basedir=/var/spool/maildirs
↓
basedir=/home/vmail ← コメントアウトを外したうえでパスを変更
# Change this to where you would like deleted maildirs to reside.
#trashbase=/var/spool/deleted-maildirs
↓
trashbase=/home/vmail/.deleted-maildirs ← コメントアウトを外したうえでパスを変更
if [ ! -e "$maildir" ]; then
echo "maildir '$maildir' does not exist; nothing to do."
exit 1
fi
↓ 下記の通り変更する
if [ ! -e "$maildir" ]; then
echo "maildir '$maildir' does not exist; nothing to do."
#exit 1
exit 0
fi
# vi /home/vmail/bin/postfixadmin-domain-postdeletion.sh # Change this to where you keep your virtual mail users' maildirs. #basedir=/var/spool/maildirs ↓ basedir=/home/vmail ← コメントアウトを外したうえでパスを変更 # Change this to where you would like deleted maildirs to reside. #trashbase=/var/spool/deleted-maildirs ↓ trashbase=/home/vmail/.deleted-maildirs ← コメントアウトを外したうえでパスを変更
nobodyがスクリプトを実行できるよう上記2つのスクリプトに対してsudoの例外を設定します
(nobodyはOpenLiteSpeedに合わせたユーザー名なので、環境によって変更してください)
# visudo # %wheel ALL=(ALL) NOPASSWD: ALL nobody ALL=(vmail) NOPASSWD: /home/vmail/bin/postfixadmin-mailbox-postdeletion.sh nobody ALL=(vmail) NOPASSWD: /home/vmail/bin/postfixadmin-domain-postdeletion.sh
nobodyがそれぞれのスクリプトにおいてパスワードなしでsudoできるようになりました
OpenLiteSpeedの設定
OpenLiteSpeedにログインし、[バーチャルホスト]-[バーチャルホスト名]の「コンテキスト」タブを開きます
下記の通り設定します
接続できるアドレスは、管理用のPCだけにしたいので制限しています
URL:/postfixadmin
場所:$SERVER_ROOT/[ドメイン名]/postfixAdmin/public
アクセス可能:はい
アクセスが許可されました:[管理用端末のIPアドレス]
アクセスが拒否されました:*


サービスを再起動します

PostfixAdminの設定
config.inc.phpは編集しないで、config.local.phpを作成します
※ 今回アドレス作成時のパスワードの制限(文字数とか)はなしにしてますが、制限したい方は$CONF[‘password_validation’]有効の上、array()内に制限内容を記述してください
# vi /usr/local/lsws/[ドメイン名]/postfixAdmin/config.local.php <?php $CONF['configured'] = true; $CONF['setup_password'] = ''; $CONF['default_language'] = 'ja'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'XXXXXXXXXXXX'; ← パスワードを入力 $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ''; $CONF['footer_text'] = 'xxxxxx'; ← ドメイン名を入力 $CONF['footer_link'] = 'https://xxxxxx;' ← ドメイン名を入力 # パスワードのバリデーションを無効にする場合 #$CONF['password_validation'] = array(); $CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /home/vmail/bin/postfixadmin-mailbox-postdeletion.sh'; $CONF['domain_postdeletion_script'] = 'sudo -u vmail /home/vmail/bin/postfixadmin-domain-postdeletion.sh'; ?>
セットアップ画面ログイン
セットアップ画面へアクセスします
https://[ドメイン名]/postfixAdmin/public/setup.php
パスワードを入力し、「Gemerate setup_password hash」ボタンをクリックする

パスワードハッシュ($CONF[‘setup_password’]=のところ)が作成されるので、config.local.phpに貼り付けます

# vi /usr/local/lsws/[ドメイン名]/postfixAdmin/config.local.php $CONF['setup_password'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; ← 追記する ?>
セットアップ画面エラー対応
再度セットアップ画面にアクセスします
https://[ドメイン名]/postfixAdmin/public/setup.php
エラーが出ているので対応が必要です

データベース接続に関するエラーでした
データベースへのアクセス権がなかったりすると出るみたいです
私の場合は凡ミスでして、本手順の最初で実施するpostfixデータベース作成画面で作成ボタンを押し忘れてそもそものデータベースが存在していなかったことが原因でした
データベースを作成して再度セットアップ画面にログインするとエラーは消えました
管理者アカウントの登録
セットアップ画面下の方に管理者アカウント登録がありますので登録します
setup password:setup.phpで最初に入力したパスワード(ハッシュ化前)
管理者:メールアドレスを入力します
パスワード:管理者アカウント用に登録したいパスワードを入力します

管理者追加後、登録情報に問題がない場合は下記のように「管理者~を追加しました。」と表示されます

Postfix
Postfixインストール
# dnf install postfix postfix-mysql
Postfix設定
メールボックス形式はMaildirにします
# vi /etc/postfix/main.cf #myhostname = virtual.domain.tld ↓ コメントアウトを外してホスト名を入力 myhostname = mail.[ドメイン名] ← ドメイン名 #mydomain = domain.tld ↓ コメントアウトを外してドメイン名を入力 mydomain = [ドメイン名] ← ドメイン名 #myorigin = $mydomain ↓ myorigin = $mydomain ← コメントアウトを外す inet_interfaces = local ↓ inet_interfaces = all ← 書き換え #home_mailbox = Maildir/ ↓ home_mailbox = Maildir/ ← コメントアウトを外す #smtpd_banner = $myhostname ESMTP $mail_name ↓ smtpd_banner = $myhostname ESMTP unknown ← コメントアウトを外して書き換え
#myorigin = $mydomainの箇所については、コメントアウトを外すとローカル配送が失敗してしまうのでコメントアウトのままにしておきます
SASLの設定
認証はDovecot側で実施するので、そのように設定します
先ほど編集した/etc/postfix/main.cfの最終行に下記を追加します
# vi /etc/postfix/main.cf # SASL smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname
Virtual Mail Boxの設定
データベース接続用のクエリを作成します
# vi /etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = XXXXXXXXXXXX ← パスワードを入力 hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username additional_conditions = and active = '1'
# vi /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = XXXXXXXXXXXX ← パスワードを入力 hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and active = '1'
# vi /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = XXXXXXXXXXXX ← パスワードを入力 hosts = localhost dbname = postfix table = alias select_field = goto where_field = address additional_conditions = and active = '1'
/etc/postfix/main.cfの最終行にバーチャルボックスの設定を追加します
# vi /etc/postfix/main.cf # Virtual Mail Box local_transport = local virtual_transport = dovecot virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 virtual_minimum_uid = 10000 virtual_mailbox_base = /home/vmail virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_alias_domains = $virtual_alias_maps dovecot_destination_recipient_limit = 1
/etc/postfix/master.cfの最終行にローカル配送をDovecotに送る設定を追加します
# vi /etc/postfix/master.cf
# Dovecot LDA
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
Postfixのセキュリティ設定
# vi /etc/postfix/main.cf
# 内部ユーザの隠蔽
disable_vrfy_command = yes
# HELO/EHLO コマンドの要求
smtpd_helo_required = yes
# HELO/EHLO コマンド時の制限設定
smtpd_helo_restrictions =
# $mynetworks 内からの接続は許可
permit_mynetworks
# EHLO ホスト名の文法が不正な場合に要求を拒否
reject_invalid_hostname
# EHLO ホスト名の文法が RFC で要求されているような完全修飾ドメイン形式ではない場合に要求を拒否
reject_non_fqdn_hostname
# MAIL FROM コマンド時の制限設定
smtpd_sender_restrictions =
# 送信者ドメインが存在しない(DNSに「A」や「MX」レコードが無い)場合に要求を拒否
reject_unknown_sender_domain
# 送信者ドメインが RFC で要求されているような完全修飾ドメイン形式ではない場合に要求を拒否
reject_non_fqdn_sender
# RCPT TO コマンド時の制限設定
smtpd_recipient_restrictions =
# アクセスしてきているクライアントのIPアドレスが$mynetworksにマッチする場合許可
permit_mynetworks
# SASL 認証に成功した場合のメール送信を許可
permit_sasl_authenticated
# このサーバで配送終了とならないドメイン宛メール送信要求を拒否(不正中継対応)
reject_unauth_destination
# このサーバで配送終了となるドメイン宛メール送信を許可
permit_auth_destination
# メールリレーの設定
smtpd_relay_restrictions =
# $mynetworks に記載されたクライアントからのメールリレーを許可
permit_mynetworks
# SASL 認証されたメールのリレーを許可
permit_sasl_authenticated
# 不明な宛先からのメールリレーを一時的なエラーコード(4xx)で拒否
defer_unauth_destination
Postfixの起動と再起動
# systemctl start postfix # systemctl enable postfix
Dovecot
Dovecotインストール
# dnf install dovecot dovecot-mysql dovecot-pigeonhole
Dovecot設定
dovecot.confが設定ファイルですが、local.confを作成してそちらに設定を記入します
メールボックスはMaildir形式を採用します
# vi /etc/dovecot/local.conf
# デバッグ関係
#auth_verbose = yes
#auth_debug = yes
#mail_debug = yes
#auth_debug_passwords = yes
listen = *
log_path = syslog
maildir_stat_dirs = yes
disable_plaintext_auth = no
auth_mechanisms = cram-md5 plain login
# @以降なし
mail_location = maildir:/home/vmail/%d/%n
# @以降あり
#mail_location = maildir:/home/vmail/%d/%u
first_valid_uid = 10000
protocols = imap lmtp sieve
protocol imap {
mail_plugins = $mail_plugins
}
protocol lmtp {
mail_plugins = $mail_plugins
}
protocol lda {
mail_plugins = $mail_plugins
}
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
user = vmail
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
# 初回ログイン時にディレクトリを自動作成
namespace inbox {
inbox = yes
location = maildir:~/maildir
mailbox Drafts {
auto = subscribe
}
mailbox Junk {
auto = subscribe
}
mailbox Trash {
auto = subscribe
}
mailbox Sent {
auto = subscribe
}
}
下記を編集し、使用しない設定は読み込まないようにします
# vi /etc/dovecot/conf.d/10-auth.conf auth_mechanisms = plain ↓ #auth_mechanisms = plain ← コメントアウト !include auth-system.conf.ext ↓ #!include auth-system.conf.ext ← コメントアウト
データベース接続設定ファイルを作成します
# vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=XXXXXXXXXXXX ← パスワードを入力
default_pass_scheme = MD5-CRYPT
password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/vmail/', maildir) AS home, 10000 AS uid, 10000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
iterate_query = SELECT username as user FROM mailbox WHERE active = '1'
パーミッションを変更します
# chmod 700 /etc/dovecot/dovecot-sql.conf.ext
Dovectの起動と再起動
# systemctl start dovecot # systemctl enable dovecot
SSL設定
Postfix
# vi /etc/postfix/main.cf # TLS CONFIGURATION # tls_high_cipherlist = kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!RC4:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES ← 追記 #smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem ↓ smtpd_tls_cert_file = /etc/letsencrypt/live/[ドメイン名]/fullchain.pem ← コメントアウトを外して変更 #smtpd_tls_key_file = /etc/pki/tls/private/postfix.key ↓ smtpd_tls_key_file = /etc/letsencrypt/live/[ドメイン名]/privkey.pem ← コメントアウトを外して変更 # Announce STARTTLS support to remote SMTP clients, but do not require that # clients use TLS encryption (opportunistic TLS inbound). # smtpd_tls_security_level = may # 送信時の暗号設定 smtpd_use_tls = yes ← 追記 smtpd_tls_ciphers = high ← 追記 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 ← 追記 smtpd_tls_mandatory_ciphers = high ← 追記 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 ← 追記 smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache ← 追記 # Use TLS if this is supported by the remote SMTP server, otherwise use # plaintext (opportunistic TLS outbound). # smtp_tls_security_level = may meta_directory = /etc/postfix shlib_directory = /usr/lib64/postfix # 受信時の暗号設定 smtp_tls_ciphers = high ← 追記 smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 ← 追記 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 ← 追記 smtp_tls_loglevel = 1 ← 追記
# vi /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 ← コメントアウトを外す
postfixを再起動します
# systemctl restart postfix
Dovecot
# vi /etc/dovecot/conf.d/10-ssl.conf ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem ↓ #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ← コメントアウト #ssl_key = </etc/pki/dovecot/private/dovecot.pem ← コメントアウト ssl_cert = </etc/letsencrypt/live/[ドメイン名]/fullchain.pem ← 追記 ssl_key = </etc/letsencrypt/live/[ドメイン名]/privkey.pem ← 追記
Dovecotを再起動します
# systemctl restart dovecot
Sieveの設定
メール振り分けに使用したいので、Sieveプラグインをdovecotのlmtpとldaに適用します
# vi /etc/dovecot/local.conf
protocol lmtp {
mail_plugins = $mail_plugins sieve ← $mail_pluginsの後ろにsieveを追記
}
protocol lda {
mail_plugins = $mail_plugins sieve ← $mail_pluginsの後ろにsieveを追記
}
Dovecotを再起動します
# systemctl restart dovecot
ドメインとメールアドレスの作成
PostfixAdminにログインし、ドメインとメールアドレスを作成します
まずはドメインを作成します

転送数とアドレス数は無制限にしたいので0としました

メールアドレスを作成します

作成するメールアドレスとパスワードを記入します
ようこそメールは不要なのでそこだけチェックを外します

SnappyMailの設定
SnappyMailインストール
webメールのSnappyMailを導入します
ディレクトリ所有者のnobodyはOpenLiteSpeedに合わせてますので、環境によって変更してください
# mkdir snappymail
# cd snappymail/
# wget https://snappymail.eu/repository/latest.tar.gz
# tar -zxvf latest.tar.gz
# rm -f latest.tar.gz
# mv _include.php include.php
# cd
# mv snappymail/ /usr/local/lsws/[ドメイン名]/
# find /usr/local/lsws/[ドメイン名]/snappymail/ -type d -exec chmod 755 {} \;
# find /usr/local/lsws/[ドメイン名]/snappymail/ -type f -exec chmod 644 {} \;
# chown nobody. -R /usr/local/lsws/[ドメイン名]/
OpenLiteSpeedの設定
OpenLiteSpeedにログインし、[バーチャルホスト]-[バーチャルホスト名]の「コンテキスト」タブを開きます
下記の通り設定します
接続できるアドレスは、管理用のPCだけにしたいので制限しています
URL:/snappymail
場所:$SERVER_ROOT/[ドメイン名]/snappymail
アクセス可能:はい
アクセスが許可されました:[管理用端末のIPアドレス]
アクセスが拒否されました:*


OpenLiteSpeedを再起動します

SnappyMailログイン
snappymailの管理ページに
https://[ドメイン名]/snappymail/?admin
下記情報を入力してログインします
ユーザー名:admin
パスワード:/usr/local/lsws/[ドメイン名]/snappymail/data/_data_/_default_/admin_password.txtに記載されている文字列
TOTPコード:空欄でOK
※当初admin_password.txtが上記パスに見つからなかったのですが、一度パスワード欄を空欄の状態でログインをしようとしてログイン失敗した後にファイルを確認すると作成されていました

LanguageがEnglishになっているので日本語にします
また、パスワードを変更するように警告が表示されているので、「change」をクリックしてパスワードを変更しておきます

ドメインの画面に移動します
「ドメインを追加」をクリックします

IMAP、SMTP、SIEVEのそれぞれの欄に設定を入れて「テスト」ボタンをクリックします



ユーザー名とパスワードは、先ほどpostfixAdminで作成したユーザーの情報を入力します

エラーがなければIMAP、SMTP、SIEVEに緑のチェックが入りますので、それを確認したら「保存」ボタンをクリックしてドメインを保存します
[SnappyMailについて]-[PHP optional extensions]を確認し、不足しているもので入れといたほうが良いものをインストールします
# dnf install lsphp82-apcu lsphp82-sodium lsphp82-tidy # dnf --enablerepo=remi install ImageMagick7 # dnf install lsphp82-imagick

メールテスト
先ほどログインした管理ページではなく下記にログインします
https://[ドメイン名]/snappymail/
ユーザー名とパスワードは、先ほどpostfixAdminで作成したユーザーの情報を入力します

ログインできたら受信テストします
送信テストはSPFやDKIMの設定はまだしていないため、実施しません
※ SPFやDKIM設定しないと送信先側の設定ではじかれる可能性が高い

メールが受信できればOKです
フォルダの振り分け設定
そのまま一般ユーザーの画面で左下の歯車マークをクリックします

「フィルター」の「rainloop.user」をクリックします

フィルターを追加をクリックします

条件を設定します

root宛てメール転送設定
root宛てメールを普段利用しているメールアドレスに転送します
エイリアスの設定
aliasesにroot宛てメールアドレスを指定した後、newaliasesで設定反映する必要があるので忘れないように注意します
# dnf install s-nail # sed -i '/^root:/d' /etc/aliases # echo "root: xxxxxxxx@example.com" >> /etc/aliases ← root宛メールを転送するメールアドレスを指定 # newaliases ← 転送設定反映 # echo test|mail root
postfixの設定変更
postfixのmain.cfでmyoriginのコメントアウトを外してありますが、コメントアウトされているとroot宛てメール配送が失敗してしまうので、再度コメントアウトします
# vi /etc/postfix/main.cf myorigin = $mydomain ↓ コメントアウトする # myorigin = $mydomain
postfixを再起動します
# systemctl restart postfix
mtaの設定変更
mtaの設定変更を行います
sendmailが入っている環境に後からpostfixをインストールすると、標準のmtaがsendmailのままだったりするそうなので変更します
+が現在の標準となりますので、「type selection numbe」と表示されたプロンプトに2を指定します
# alternatives --config mta There are 2 programs which provide 'mta'. Selection Command ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter to keep the current selection[+], or type selection number: 2 ← 2を入力
mtaがpostfixに紐づいていることを確認します
# ls -l /etc/alternatives/mta lrwxrwxrwx 1 root root 26 5月 8 16:38 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix
sendmailのmta優先度を変更し、再起動時にもpostfixが標準mtaとなるように設定します
# alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.sendmail 0
2に+が付きましたので設定完了です
# alternatives --config mta There are 2 programs which provide 'mta'. Selection Command ----------------------------------------------- 1 /usr/sbin/sendmail.sendmail *+ 2 /usr/sbin/sendmail.postfix Enter to keep the current selection[+], or type selection number:
メール送信テストをします
指定したアドレスにメールが届くことを確認します
# echo test|mail root
参考
https://psychoco.net/linux/mail-server-with-postfixadmin-on-rhel9
水銀室 PostfixAdminをSQLiteでインストールする -CentOS最短構築支援- (vector.co.jp)


コメント