差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mail [2021/05/27 14:40] – skk | mail [2024/09/04 16:44] (現在) – skk | ||
---|---|---|---|
行 1: | 行 1: | ||
- | = [[mail]] | + | = [[mail]] / LM: [2024-09-04 16:43:44] |
+ | ~~NOCACHE~~ | ||
+ | メールサーバの設定についてのメモを置く場所. | ||
====== 2 台の dovecot サーバでの冗長化構成(2021/ | ====== 2 台の dovecot サーバでの冗長化構成(2021/ | ||
行 40: | 行 41: | ||
==== 変更点1 ==== | ==== 変更点1 ==== | ||
SSL/TLS に対応した | SSL/TLS に対応した | ||
+ | |||
+ | <code ini> | ||
+ | smtpd_tls_cert_file = / | ||
+ | smtpd_tls_key_file = / | ||
+ | smtpd_tls_CAfile = / | ||
+ | smtpd_tls_session_cache_database = btree:/ | ||
+ | smtpd_tls_session_cache_timeout = 3600s | ||
+ | smtpd_tls_received_header = yes | ||
+ | smtpd_tls_loglevel = 1 | ||
+ | </ | ||
==== 変更点2 ==== | ==== 変更点2 ==== | ||
- | relay_host | + | 特定の From ドメインからのみ,特定の |
- | そのかわり,Amazon SES は 465(smtps) だけでなく,587(submission) でも動作することが分かった. | + | |
+ | / | ||
+ | |||
+ | <code ini> | ||
+ | smtp_use_tls = yes | ||
+ | smtp_sender_dependent_authentication = yes | ||
+ | sender_dependent_default_transport_maps = hash:/ | ||
+ | smtp_sasl_auth_enable = yes | ||
+ | smtp_sasl_security_options = noanonymous | ||
+ | smtp_sasl_password_maps = hash:/ | ||
+ | smtp_always_send_ehlo = yes | ||
+ | smtp_tls_policy_maps = hash:/ | ||
+ | # | ||
+ | # | ||
+ | smtp_tls_security_level = may | ||
+ | smtp_tls_note_starttls_offer = yes | ||
+ | smtp_tls_cert_file = / | ||
+ | smtp_tls_key_file = / | ||
+ | smtp_tls_CAfile = / | ||
+ | </ | ||
+ | |||
+ | まず,smtp_sender_dependent_authentication を設定することで,sender_dependent_default_tarnsport_maps が有効になるように. sender_dependent_default_transport_maps には,以下のような sender_relay 情報を記述. | ||
+ | |||
+ | <code ini> | ||
+ | @bpsinc.jp | ||
+ | </ | ||
+ | |||
+ | Amazon SES から発行されているユーザ名とパスワードは,tls_policy にて encrypt を指定した後,sasl_passwd に以下のように設定. | ||
+ | |||
+ | sasl_passwd: | ||
+ | <code ini> | ||
+ | email-smtp.us-west-2.amazonaws.com | ||
+ | </ | ||
+ | |||
+ | |||
+ | tls_policy: \\ | ||
+ | <code ini> | ||
+ | email-smtp.us-west-2.amazonaws.com: | ||
+ | </ | ||
+ | |||
+ | sender_relay, | ||
+ | |||
+ | |||
+ | はまったのが,relay_host で SMTPS(465) で送信しようとすると,postfix の挙動全体で,\\ | ||
+ | smtp_tls_wrappermode = yes\\ | ||
+ | smtp_tls_security_level = encrypt\\ | ||
+ | と書いた上で,25 番への relay ができないモードになってしまうと言う部分.これが,どうしても解決できずに,どこかで見た,submission | ||
行 49: | 行 106: | ||
* FreeBSD 12 で自宅サーバ作成 メールサーバ編:https:// | * FreeBSD 12 で自宅サーバ作成 メールサーバ編:https:// | ||
* DNS 〜 dovecot まで,かなり充実した記事. | * DNS 〜 dovecot まで,かなり充実した記事. | ||
+ | * Amazon SES とポストフィックスの統合:https:// | ||
+ | * Amazon の書いてくれている文章.ここで submission port を利用していたので,465 に拘らずに行けることが分かった. | ||
+ | |||
===== dovecot 基本設定 ===== | ===== dovecot 基本設定 ===== | ||
行 86: | 行 146: | ||
zlib_save_level = 6 | zlib_save_level = 6 | ||
} | } | ||
+ | </ | ||
+ | |||
+ | [2023-04-29] | ||
+ | |||
+ | 追記: | ||
+ | |||
+ | mdbox を見ても,テキストで保存されていた. | ||
+ | |||
+ | plugin lda の中の mail_plugin にも zlib を追記しないと動かなかったかもしれない. | ||
+ | |||
+ | < | ||
+ | protocol lda { | ||
+ | deliver_log_format = msgid=%m: %$ | ||
+ | info_log_path = / | ||
+ | log_path = / | ||
+ | mail_plugins = sieve zlib | ||
+ | ... | ||
</ | </ | ||
行 126: | 行 203: | ||
doveadm の man の中に,色々なコマンドが書いてあり,doveadm-command という名前で man が準備されている. | doveadm の man の中に,色々なコマンドが書いてあり,doveadm-command という名前で man が準備されている. | ||
基本的に root (または,mail ユーザ)でないと動作しない. | 基本的に root (または,mail ユーザ)でないと動作しない. | ||
+ | |||
+ | === doveadm purge === | ||
+ | == マニュアル == | ||
+ | < | ||
+ | |||
+ | == 基本 == | ||
+ | メールに対しての refcount が 0 になってるものを実際にストレージ上から削除するコマンド.Disk I/O の少ないタイミングで実行される,と記述があったが,実際に実行されているかの確認は [2021-12-31] 現在,とれていない. | ||
+ | |||
+ | [2024-09-04] 少なくとも利用しているファイル保存形式が mdbox の場合,メールクライアントからメールを大量に削除しただけでは,まだ,ストレージ自体の削減にはならないが,sudo doveadm purge -u hoge@hoge.com を実行した後は,ストレージが削減されているのを確認できた.doveadm mailbox で確認できるサイズよりもずっと多くのストレージが削減されているように見えている.base64 やファイルシステムのブロックサイズが影響するのか…?と妄想するが,確認はとれていない. | ||
+ | |||
+ | == 具体例 == | ||
+ | * 特定ユーザのメールボックスを確認し,refcount が 0 なら削除する. | ||
+ | % sudo doveadm purge -u hoge@hoge.com | ||
+ | |||
+ | * 全ユーザのメールボックスを確認し,refcount が 0 なら削除する. | ||
+ | % sudo doveadm purge -A | ||
=== doveadm search === | === doveadm search === | ||
行 246: | 行 339: | ||
== 基本 == | == 基本 == | ||
+ | そのうち書きたい.多分,コマンドラインでサーバ間の sync を行うなども可能だと思われる.imapsync の代わりとして利用できそうな気がする.imapsync より高速だと思われる. | ||
== 具体例 == | == 具体例 == | ||
行 264: | 行 357: | ||
以下の設定は,さくら VPS・オンプレマシンの両方に必要. | 以下の設定は,さくら VPS・オンプレマシンの両方に必要. | ||
- | / | + | / |
<code ini> | <code ini> | ||
mail_plugins = $mail_plugins notify replicator | mail_plugins = $mail_plugins notify replicator | ||
行 296: | 行 389: | ||
plugin { | plugin { | ||
# When saving a new mail via IMAP or delivering a mail via LDA/LMTP, | # When saving a new mail via IMAP or delivering a mail via LDA/LMTP, | ||
- | # wait for the mail to be synced to the remote site. If it doesn' | + | # wait for the mail to be synced to the remote site. If it doesn''t finish |
# in 2 seconds, return success anyway. | # in 2 seconds, return success anyway. | ||
replication_sync_timeout = 10 | replication_sync_timeout = 10 | ||
行 304: | 行 397: | ||
</ | </ | ||
- | doveadm user で出てくるユーザ全てを同期する.特定ユーザのみ同期したくない場合は,dovecot.passwd.db (passwd-file) | + | 大事なのは,mail_replica の辺りで,ssh |
+ | |||
+ | ssh 経由で行う場合は,root でのログインを有効にしないと行けないので,sshd において,以下のような設定をしておきつつ,鍵をお互いの root/ | ||
< | < | ||
- | username: | + | ## Okay allow root login with public ssh key for 210.160.237.138 ## |
+ | Match Address 210.160.237.138 | ||
+ | PermitRootLogin yes | ||
</ | </ | ||
+ | 今回は tcp を利用した.この場合,doveadm_password にて,お互いに共通のパスワードを書いておく必要がある.また,dsync_remote_cmd は必要ないと思われるが,消すのがめんどくさいので残してある. | ||
- | master/ | + | dsync では,doveadm user で出てくるユーザ全てを同期してしまう.特定ユーザのみ同期したくない場合は,dovecot.passwd.db (passwd-file) |
+ | < | ||
+ | username: | ||
+ | </ | ||
- | === 参考情報 === | + | 多くのページにて,userdb_ prefix がいらない,と書いてあった気がするが,結局つけなければ動作しなかった. |
- | Replication with dsync | + | |
+ | === 参考情報 === | ||
+ | * Replication with dsync:https:// | ||
+ | * Replication with dsync:https:// | ||
+ | * 全ての情報が,この二つのページに集約されている. | ||
+ | * https:// | ||
+ | * 日本語情報.結構しっかりまとまっている. | ||
===== dovecot FTS 設定 ===== | ===== dovecot FTS 設定 ===== | ||
行 392: | 行 497: | ||
* sieve と replicator の相性が悪い気がする. | * sieve と replicator の相性が悪い気がする. | ||
* sieve は記述言語の癖が大きいのと,記述ミスをするとメールがなくなる時があり,なかなか恐い. | * sieve は記述言語の癖が大きいのと,記述ミスをするとメールがなくなる時があり,なかなか恐い. | ||
- | * imapfilter は,lua というプログラミング言語で記述するため,振り分けルールの中の記述自由度が高い.変数なども使える.記述を間違った際は,imapfilter が動作しないだけなので,メール紛失の危険が低い. | + | * [[imapfilter]] は,lua というプログラミング言語で記述するため,振り分けルールの中の記述自由度が高い.変数なども使える.記述を間違った際は,imapfilter が動作しないだけなので,メール紛失の危険が低い. |
- | + | ||
===== spamassassin 設定 ===== | ===== spamassassin 設定 ===== | ||
行 668: | 行 771: | ||
+ | ---- | ||
+ | このページへのアクセス | ||
+ | 今日: {{counter|today}} / 昨日: {{counter|yesterday}} | ||
+ | 総計: {{counter|total}} | ||