ウェブサイト検索

Linux で仮想ドメイン ユーザーを使用して Postfix と Dovecot を構成する方法 - パート 2


このシリーズの前の記事では、phpMyAdmin を使用してメール サーバー データベースを安全に設定および管理する方法を説明しました。

要件:

  1. MariaDB を使用して Postfix メール サーバーと Dovecot をインストールする – パート 1

次に、電子メールの送受信を実現する内部プログラムである PostfixDovecot (それぞれ送信メールと受信メールを処理するため) を設定します。

Postfix メールサーバーの構成

Postfix の設定を開始する前に、ここでマニュアルページを参照し、特に「新規 Postfix ユーザー向け」というタイトルのセクションを重点的に参照することをお勧めします。 。そうすれば、このチュートリアルに従うのが簡単になるでしょう。

簡単に言うと、Postfix には 2 つの設定ファイルがあることがわかります。

  1. /etc/postfix/main.cf (Postfix 設定パラメータ。詳細については、man 5 postconf を参照してください)。
  2. /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_tblUsers_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パート 1dba ユーザー用に選択したパスワードに置き換えます。または、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.cfmariadb-vusers.cf、および で有効なユーザーとパスワードのペアを使用していることを確認してください。 mariadb-valias.cf (またはこれらのファイルの名前として選択したもの)。

Dovecot の構成

IMAP/POP3 サーバーとして、Dovecot はメール ユーザー エージェント (MUA またはクライアントとも呼ばれます)、ThunderbirdOutlook など、メールにアクセスする例をいくつか挙げます。

まず、電子メールを処理するためのユーザーとグループを作成しましょう (電子メール アカウントはシステム ユーザーに関連付けられていないため、これが必要になります)。未使用で大きな数値である限り、別の UIDGID (以下で説明するように 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 

最後に、ファイアウォール経由でSMTPPOP3IMAPが有効になっていることを確認します。


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 メール サーバーのセットアップは簡単な作業ではありませんが、すべてのシステム管理者にとってやりがいのある経験であることに注意してください。

ドキュメントを読んでもまだ PostfixDovecot で問題が解決しない場合は、以下のコメント フォームを使用してお気軽にメモを残してください。喜んで対応させていただきます。 (この記事で説明したように、postconfdoveconf を使用して取得した Postfix と Dovecot の設定をオンライン ストレージ サービスにアップロードすることを忘れないでください)。