Postfixを設定する
次にPostfixの設定ファイルを編集します。
/etc/postfix/main.cfを次のように編集します。
/etc/postfix/main.cf
=============main.cf======================
mydestination = $myhostname, localhost.$mydomain, digihide.local (追加)
==========================================
ここで指定したドメインと同じドメインのメールが到着すると自分宛のメールと認識され、
ローカルディスクへ保存される。
デフォルトのlocalhostの状態では、メールサーバ自身しかPostfixへアクセスできないので
全てのIPアドレスでサービスを提供できるようにするためにallにする。
=============================
inet_interface = all
=============================
バインドするIPアドレスをIPv4に限定させます。
IPv6が無い場合の、とりあえず起動エラーを避けるためです。
=============================
inet_protocols = ipv4
=============================
無条件に外部ドメインへメールをリレーするクライアントを指定します。
localhostが指定されているので、localhostからはどこへでも送信できますが、それ以外のパソコンからはメールを中継することはできません。
なお、localhostだけに制限されていても自分宛て(example.local宛)のメールは全てのアドレスから受信可能ですので問題ありません。
=============================
mynetworks = localhost
=============================
メールボックスの形式です。
CentOSのPostfixはデフォルトはメールスプールへMailBox形式で保存します。
MailBox形式は、全てのファイルを1ファイルへ保存します。
MailDir形式は1メールを1ファイルで保存します。
MailBoxの設定をコメントアウトすると、PostfixはデフォルトのMailDir形式で保存されます。
home_mailbox値を追加設定すると、各ユーザーのホームディレクトリへMailDirを作成することもできます。
=============================
#home_mailbox = MailBox (コメントアウトすると、MailDir形式になる)
=============================
次のmail_spool_directoryもメールボックスの形式を左右します。
==============================
mail_spool_directory = /var/mail/ (末尾へスラッシュを加える)
==============================
/var/mail/以下へユーザごとにmaildir形式で保存するよう設定します。
末尾にスラッシュを付けておくと、ディレクトリが無い場合にユーザ名で自動作成してくれます。
例えばuser1のメールを受信したときディレクトリがなければ、/var/mail/user1が作成されます。
スラッシュを付けないと、MailBox形式で保存されます。
◻️追加のパラメータ
====================
mydomain = example.local
myoriginal = $mydomain
====================
検証レベルの動作には影響しません。
$mydomainとして変数として参照されたり、他のパラメータのデフォルト値として
採用されることがあります。
◻️メールアカウントを作成する
メールサーバでメールを受け付けるためには、宛先となるメールアカウントが必要です。
メールアカウントとは、CentOS上のユーザアカウントです。
#useradd user1 -s /sbin/nologin
#passwd user1
(ポイント)
メールを受信するためだけでログイン権限を与えるのは危険なので
ログインできない制限アカウントを作ります。
パスワードも設定します。これがメール受信時のパスワードになります。
(確認してみる!)
外部からexample.local宛のメールを受け付け、/var/mailに保存されることを確認しましょう。
◻️メールディレクトリを自動作成できるようにする
/var/mailディレクトリへの書き込み権が与える必要がある。
(※MailBox形式の場合、/var/spool/mailの設定を変更しなくてもメールファイルを保存可能です)
通常、mailディレクトリは、所有者がroot、グループがmailとなっています。
/var/mail ディレクトリの実体は /var/spool/mail にあります。
(以下のコマンドで所有者とアクセス権を確認します。)
#ll /var/spool/mail
と入力すると。デフォルトのアクセス権は「drwxrwxr-x root mail」となっていると思われます。
メール user1@example.localが着信すると、user1の権限でディレクトリを作成しようとします。
rootユーザとmailグループ以外のユーザには書き込み権(w)がないので、失敗します。
以下のコマンドで、一般ユーザにもディレクトリ作成権利を与えます。
#chmod 777 /var/spool/mail
これで、メールが着信すると、自動でメールディレクトリが作成されます。
ただしすでにMailbox形式のファイルが作成されていると、重複によりメールディレクトリの作成に失敗します。先に削除しておきましょう。
※ディレクトリの権限を777にすることで、注意すべきがあります、
/var/spool./mailディレクトリが777となっているため、このディレクトリ配下にあるファイルは一般ユーザでも 削除可能です。ただし以下2点により現実には問題になりません。
・ファイルを削除できても、メールディレクトリは閲覧・削除できないので問題にはなりません。
・純粋なメールサーバなら、管理者かそれに準ずるユーザしかログインできません。
この「/var/mail以下に全メールディレクトリを集める」運用方式の唯一の欠点は、メールアカウントを削除してもメールディレクトリが残ってしまう点です。
メールユーザを削除したら、メールディレクトリも忘れず削除します。
/home/user/maildir で管理するシステムの場合、ユーザを削除するとホームディレクトリも一緒に削除してくれるので、ゴミが残るということはありません。
◻️TelnetでSMTPの動作を確かめる
telnetでSMTPのメールを送信するのは面倒ですが、テストのためにはよく使います。
telnetのメール送信はSMTPの動作不良を確認することが可能。
「telnet SMTPサーバアドレス 25」として直接SMTPサービスにログインし
SMTPコマンドを実行します。
(太字部分が入力内容です。)
===============================
220 localhost.localdomain ESMTP Postfix
helo localhost
250 localhost.localdomain
mail from: user1@example.local
250 2.1.0 Ok
rcpt to: user1@example.local
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
helo postfix
.
250 2.0.0 Ok: queued as 0625633CC90
quit
221 2.0.0 Bye
===============================
◻️メールサーバのuser1ディレクトリにファイルが増えていることを確認する。
#ls /var/mail/user1
(ポイント)
SMTPの仕事は、受信したメールをディレクトリにファイルとして保存するだけです。
パソコンがサーバからメールを取り出すには、POPサービスを使用します。
◻️Dovecotをインストールする。
#yum install dovecot
◻️/etc/dovecot/dovecot.conf
=========================
listen = * #IPv6へのバインドを止め、IPv4へのみバインドする
=========================
(ポイント)
IPv6環境が構成されていない場合、ここで起動エラーを出力します。
◻️/etc/dovecot/conf.d/10-mail.conf
メールスプールの形式(MailDirからMBoxか)に合わせて設定します。
Postfixがメールを保存している形式に合わせます。
●MailDir形式の場合(1メール1ファイル)
mail_location = maildir:/var/mail/%u
/var/mail/ユーザ名で保存されているメールディレクトリ式のメールを取り出す設定です。
各ユーザーのホームディレクトリにメールディレクトリが保存されている場合は、
mail_location = maildir:~/Maildir と設定します。
●MailBox形式の場合
(全メール1ファイル・Postfixのデフォルト) mail_location = mbox:/var/empty:INBOX=/var/mail/%u:INDEX=MEMORY
なおIMAPを用いる場合はメールボックス以外に各ユーザーごとにディレクトリが必要です。
通常は以下のようにホームディレクトリへまとめて保存させます。
mail_location = mbox:~/mail:INBOX=/var/mail/%u
設定の意味は「基本ディレクトリはユーザーのホームフォルダへmailとして保存し、メール本文(INBOX)は/var/mailに保存します」です。
/etc/dovecot/conf.d/10-auth.conf
=========================
disable_plaintext_auth = no #yesからnoへ変更
=========================
POP3通信時の平文の認証を許可します。
デフォルトでは暗号化されたパスワードしか受け付けないので、POP3が動作しません。
/etc/dovecot/conf.d/10-ssl.conf
=========================
#ssl = required #コメントアウト
=========================
いつの頃からか、プレーンテキストでPOP3通信しようとすると、TLSやSSLなどの暗号化が強要されます。
ここでSSL通信強制を無効化しておきます。
[Postfixの設定]
◻️smtps(SMTP-Auth over SSL)を有効化
vi /etc/postfix/master.cf
======== master.cf(編集前) ===================================
#smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
=========================================================================
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
======== master.cf(編集後)====================================
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
================================================
◻️追加項目
# VRFYコマンドの使用を禁止する
disable_vrfy_command = yes
# MailBoxの最大サイズの指定
# メールボックスがMaildir形式のためこの設定は無視されますが「message_size_limit」との兼ね合いのため設定しておきます
mailbox_size_limit = 204800000
# 受信メールサイズの制限「mailbox_size_limit」より少ない値を設定してください
message_size_limit = 5120000
# 接続元の制限(スパムメール対策)
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/access
reject_rbl_client zen.spamhaus.org
reject_non_fqdn_sender
reject_unknown_sender_domain
# エンベロープアドレス(MAIL FROM)による制限(スパムメール対策)
smtpd_sender_restrictions =
reject_rhsbl_sender zen.spamhaus.org
reject_unknown_sender_domain
########## SMTP-Auth関連 ##########
# SASL認証を有効化
smtpd_sasl_auth_enable = yes
# Dovecot SASL ライブラリを指定
smtpd_sasl_type = dovecot
# Dovecot SASL ライブラリの認証ソケットファイル /var/spool/postfix/ からの相対パスで記述
smtpd_sasl_path = private/auth
# 古いバージョンの AUTH コマンド (RFC 2554) を実装した SMTP クライアントとの相互運用性を有効にする
broken_sasl_auth_clients = yes
########## TLS/SSL関連 ##########
# TLSを有効化
smtpd_use_tls = yes
# 宛先のメールサーバがTLSに対応していれば、通信を暗号化する
smtp_tls_security_level = may
# サーバ証明書と秘密鍵を指定
#
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.digihide.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.digihide.com/privkey.pem
# TLSログレベルの設定
# 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て
smtpd_tls_loglevel = 1
# 暗号に関する情報を "Received:" メッセージヘッダに含める
smtpd_tls_received_header = yes
# 接続キャッシュファイルの指定
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
# キャッシュの保持時間の指定
smtpd_tls_session_cache_timeout = 3600s
# 認証を通過したものはリレーを許可する(permit_sasl_authenticated)
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
====================================================
受信プロトコルの設定
vim /etc/dovecot/dovecot.conf
==========dovecot.conf===============
#protocols = imap pop3 lmtp
↓
protocols = imap pop3
============================================
◻️暗号化を使う imaps と pop3s を有効にして
平文で通信する imap と pop3 は「port = 0」を設定し無効にする。
==========10-master.conf===================
service imap-login {
inet_listener imap {
#port = 143
↓
port = 0
}
inet_listener imaps {
#port = 993
#ssl = yes
↓
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
#port = 110
↓
port = 0
}
inet_listener pop3s {
#port = 995
#ssl = yes
↓
port = 995
ssl = yes
}
}
==================================================================
◻️Dovecot SASL ライブラリの認証ソケットファイルを指定
vi /etc/dovecot/conf.d/10-master.conf
=============10-master.conf====================
service auth {
(略)
# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}
↓
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
============================================
◻️認証方式の設定
※平文パスワードを許可していますが、SSL/TLSで暗号化されますので問題ありません。
vi /etc/dovecot/conf.d/10-auth.conf
==========10-auth.conf========================
#disable_plaintext_auth = yes
↓
disable_plaintext_auth = no
auth_mechanisms = plain
↓
auth_mechanisms = plain login
=====================================================
◻️SSL/TLSの有効化とサーバ証明書と秘密鍵を指定
vi /etc/dovecot/conf.d/10-ssl.conf
==========10-ssl.conf======================
ssl = required
↓
ssl = yes
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
↓
ssl_cert = </etc/letsencrypt/live/mail.digihide.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.digihide.com/privkey.pem
====================================================
◻️メールボックスの場所を指定
vi /etc/dovecot/conf.d/10-mail.conf
==============10-mail.conf==================
#mail_location =
↓
mail_location = maildir:~/Maildir
===============================================
◻️ログの出力先を変更
vi /etc/dovecot/conf.d/10-logging.conf
=============10-logging.conf===============
#log_path = syslog
↓
log_path = /var/log/dovecot/dovecot.log
=================================================
◻️ログの出力先作成しておきます
mkdir /var/log/dovecot
[postfixログの設定(syslogサーバー関連)]
1)出力先の変更
vi /etc/rsyslog.conf
========rsyslog.conf=======
mail.* -/var/log/maillog
↓
mail.* -/var/log/mail/maillog
============================
◻️syslog再起動
systemctl restart rsyslog
◻️不要なログを削除
rm -f /var/log/maillog*
ログローテーション設定
ログファイルの保存期間は60日と仮定する。
vi /etc/logrotate.d/syslog
==================syslog=============
/var/log/maillog <——削除する。
========================================
vi /etc/logrotate.d/maillog
==========maillog=================
/var/log/mail/maillog {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
======================================
◻️確認してみる。
logrotate -dv /etc/logrotate.d/maillog
=====確認メッセージ================
rotating pattern: /var/log/mail/maillog after 1 days (60 rotations)
empty log files are rotated, old logs are removed
========================================
[Dovecotログ設定]
vi /etc/logrotate.d/dovecot
=========dovecot===============
/var/log/dovecot/dovecot.log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}
=======================================
◻️確認を行う
logrotate -dv /etc/logrotate.d/dovecot
===== 確認メッセージ===============
rotating pattern: /var/log/dovecot/dovecot.log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
==========================================
◻️アカウント作成
今回、test-user1というアカウント作成してみる。
===========================
useradd -s /sbin/nologin test-user1
passwd test1234
ユーザー test-user1のパスワードを変更
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新出来る。
===============================
useraddについては、メール専用のアカウント作成なので
一般のアカウントとしてのログインを拒否にした設定。
<参照ページ>
https://blog.apar.jp/linux/3937/
|
2017年11月24日金曜日
postfix&dovecot設定メモ
登録:
コメントの投稿 (Atom)
php log(ECS ログ出力)
# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...
-
以下のログに表示されている、" network unreachable resolving"は IPv6に関するメッセージではあるが、基本的にIPv4しか使用していないため このメッセージを消したい時の対策を以下に示す。 上記は、IPv4での名前解決...
-
apk add openrc --no-cache [ 以下のように使えることが把握できる ] alpinelinuxのサービスの再起動コマンド: rc-service nginx restart
0 件のコメント:
コメントを投稿