【conoha VPS AlmaLinux9構築⑧】メールサーバー構築(PostfixとDovecotの設定)

AlmaLinux9

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)

コメント

タイトルとURLをコピーしました