Linux で仮想ドメイン ユーザーを使用して Postfix と Dovecot を構成する方法 - パート 2
このシリーズの前の記事では、phpMyAdmin を使用してメール サーバー データベースを安全に設定および管理する方法を説明しました。
要件:
- MariaDB を使用して Postfix メール サーバーと Dovecot をインストールする – パート 1
次に、電子メールの送受信を実現する内部プログラムである Postfix と Dovecot (それぞれ送信メールと受信メールを処理するため) を設定します。
Postfix メールサーバーの構成
Postfix の設定を開始する前に、ここでマニュアルページを参照し、特に「新規 Postfix ユーザー向け」というタイトルのセクションを重点的に参照することをお勧めします。 。そうすれば、このチュートリアルに従うのが簡単になるでしょう。
簡単に言うと、Postfix には 2 つの設定ファイルがあることがわかります。
- /etc/postfix/main.cf (Postfix 設定パラメータ。詳細については、man 5 postconf を参照してください)。
- /etc/postfix/master.cf (Postfix マスター デーモンの設定。詳細については、man 5 マスター を参照してください)。
/etc/postfix/main.cf
で、次の行を見つけて (または必要に応じて追加し)、以下に示す値と一致することを確認します。
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
次の 3 つの設定は特に重要です。黄色で示されたファイルでは、Domains_tbl、Users_tbl、および Alias_tbl テーブルへの Postfix のアクセスを設定します。
virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf
ファイルを作成し、次の内容を挿入する限り、上記の別のファイル名を選択できることに注意してください。いずれの場合も、YourPassword をパート 1 で dba ユーザー用に選択したパスワードに置き換えます。または、MariaDB を使用することもできます。以下のユーザーとパスワードのルート認証情報。
また、パート 1 で作成した電子メール サーバー データベースとテーブルの名前とまったく同じ名前を使用してください。
/etc/postfix/mariadb-vdomains.cf
内:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
/etc/postfix/mariadb-vusers.cf
内:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'
/etc/postfix/mariadb-valias.cf
内:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
最後に、これらのファイルのアクセス許可を 640 に変更することを忘れないでください。
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
また、所有権はユーザー root とグループ postfix に与えられます。
chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf
次に、安全な接続を有効にするには、/etc/postfix/master.cf
で次の設定のコメントが解除されていること (または、必要に応じて追加されていること) を確認する必要があります。
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
#virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
注: -o
オプションで始まる行のインデントは重要です。それ以外の場合、後置チェックはエラーを返します。
変更を保存する前に、ファイルの最後に次の行を追加します。
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
この時点で、Postfix がパート 1 で作成したデータベース テーブルとドメイン、アカウント、エイリアスにアクセスできるかどうかを確認することが重要です。
これを行うには、Postfix が動作中に検索するテーブルとの通信をテストするユーティリティであるpostmap コマンドを使用しますが、何よりもまず postfix を再起動する必要があります。
systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-valias.cf
下の画像では、データベース内の既存のレコードに対して1 が返されることがわかります。それ以外の場合、画面には何も表示されません。エイリアス チェックの場合、エイリアスがマッピングされている実際の電子メール アカウントが返されることに注意してください。
各メールアカウントに設定された資格情報に対して認証を行っているわけではないことに注意してください。データベース内のこれらのレコードを検出するPostfixの機能をテストしているだけです。
したがって、上記とは異なる出力が得られる場合は、mariadb-vdomains.cf、mariadb-vusers.cf、および で有効なユーザーとパスワードのペアを使用していることを確認してください。 mariadb-valias.cf (またはこれらのファイルの名前として選択したもの)。
Dovecot の構成
IMAP/POP3 サーバーとして、Dovecot はメール ユーザー エージェント (MUA またはクライアントとも呼ばれます)、Thunderbird や Outlook など、メールにアクセスする例をいくつか挙げます。
まず、電子メールを処理するためのユーザーとグループを作成しましょう (電子メール アカウントはシステム ユーザーに関連付けられていないため、これが必要になります)。未使用で大きな数値である限り、別の UID と GID (以下で説明するように 5000 以外) を使用できます。
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Dovecot の設定は、複数の構成ファイルに分割されています (次の行のコメントが解除されていることを確認するか、以下に示されている設定と一致するように編集してください)。
/etc/dovecot/dovecot.conf
内:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf
/etc/dovecot/conf.d/10-auth.conf
内 (SQL による認証のみを有効にし、他の認証方法はコメントアウトしたままにしておきます):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.ext
内 (電子メールは / 内の yourdomain.com という名前のディレクトリ内に保存されることに注意してください) home/vmail が存在しない場合は作成する必要があります。この場合、mkdir /home/vmail/linuxnewz.com を使用してそのドメインのメールを管理しました)。
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
ユーザー アカウントの個別の受信箱は、そのようなアカウントの電子メールが最初に受信されたときに作成されます。
/etc/dovecot/conf.d/10-mail.conf
内:
mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl
/etc/dovecot/conf.d/10-master.conf
内:
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
user = dovecot
}
service auth-worker {
user = vmail
}
service dict {
unix_listener dict {
}
}
/etc/dovecot/conf.d/10-ssl.conf
内 (CA によって署名された証明書を使用する予定の場合は、証明書とキーのパスを置き換えます):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
/etc/dovecot/dovecot-sql.conf.ext
に、データベース情報とパート 1 で作成した管理ユーザーの資格情報を入力します。
重要: パスワードにアスタリスク (#)
が含まれている場合は、次の例に示すように接続文字列を囲む必要があります。
driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';
さらに、 /etc/dovecot/conf.d/10-logging.conf
で Dovecot のログを Postfix とは別に設定できます。
log_path = /var/log/dovecot.log
最後に、ユーザー dovecot が Dovecot ログにアクセスできることを確認します。
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Postifix 構成を確認して修正し、ファイアウォールで SMTP、POP3、および IMAP を有効にする
Postfix や Dovecot の構成中に問題が発生した場合は、すべての構成ファイルを送信して助けを求める代わりに、次のようにして構成の概要 (コメントされていない行のみ) を取得できます。
postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot
さらに、電子メールの受信トレイがvmail のみで読み取れることを確認してください。
chown –R vmail:vmail /home/vmail
設定ファイルは、vmail および dovecot ユーザーも読み取れる必要があります。
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
最後に、ファイアウォール経由でSMTP、POP3、IMAPが有効になっていることを確認します。
firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent
Thunderbird を Postfix の電子メール クライアントとして設定する
電子メール通信で使用されるポートへのファイアウォールを介したアクセスが安全になったら、電子メール クライアントを構成します。 [email とそれに対応するパスワード、および IMAP (または POP3) および SMTP サーバーとしての mail.linuxnewz.com を使用して、メールの送受信を開始する準備が整いました。そしてそのようなアカウントから:
信頼できるサードパーティ CA によって署名されていない証明書を使用しているために表示される警告メッセージは無視しても問題ありません。
簡単なテストメールを作成して、[送信] をクリックしてみましょう。
送信サーバーの自己署名証明書を受け入れるように求められたら、前と同様に確認します。
最後に、宛先メールに移動して、送信したばかりのメールを受信したかどうかを確認します。送信されている場合は、それに返信し、送信元の電子メールの受信箱に配信されているかどうかを確認します (そうでない場合は、/var/log/maillog の Postfix ログ、または /var の Dovecot ログを参照してください)トラブルシューティング情報については、/log/dovecot.log):
これで、Postfix および Dovecot 電子メール サーバーが動作し、電子メールの送受信を開始できるようになりました。
まとめ
この記事では、Linux サーバーで電子メール トラフィックを処理するために Postfix と Dovecot を設定する方法を説明しました。この記事に記載されているとおりに動作しない場合は、時間をかけて Postfix および Dovecot のドキュメントを確認してください。
Postfix メール サーバーのセットアップは簡単な作業ではありませんが、すべてのシステム管理者にとってやりがいのある経験であることに注意してください。
ドキュメントを読んでもまだ Postfix や Dovecot で問題が解決しない場合は、以下のコメント フォームを使用してお気軽にメモを残してください。喜んで対応させていただきます。 (この記事で説明したように、postconf と doveconf を使用して取得した Postfix と Dovecot の設定をオンライン ストレージ サービスにアップロードすることを忘れないでください)。