差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mail [2021/05/27 14:40] skkmail [2024/09/04 16:44] (現在) skk
行 1: 行 1:
-= [[mail]] += [[mail]] / LM: [2024-09-04 16:43:44
 +~~NOCACHE~~
  
 +メールサーバの設定についてのメモを置く場所.
  
 ====== 2 台の dovecot サーバでの冗長化構成(2021/05) ====== ====== 2 台の dovecot サーバでの冗長化構成(2021/05) ======
行 40: 行 41:
 ==== 変更点1 ==== ==== 変更点1 ====
 SSL/TLS に対応した SSL/TLS に対応した
 +
 +<code ini>
 +smtpd_tls_cert_file = /usr/local/etc/letsencrypt/live/ns.sakaki.works/cert.pem
 +smtpd_tls_key_file = /usr/local/etc/letsencrypt/live/ns.sakaki.works/privkey.pem
 +smtpd_tls_CAfile = /usr/local/etc/letsencrypt/live/ns.sakaki.works/fullchain.pem
 +smtpd_tls_session_cache_database = btree:/var/cache/postfix/smtpd_scache
 +smtpd_tls_session_cache_timeout = 3600s
 +smtpd_tls_received_header = yes
 +smtpd_tls_loglevel = 1
 +</code>
  
 ==== 変更点2 ==== ==== 変更点2 ====
-relay_host で SMTPS 対応しよう失敗. +特定の From ドメインからのみ,特定の relay_host を利用するように設定た.個人メールアカウントはさくら VPS から直接配送と,会社のメールは,会社の SMTP サーバ(Amazon SES)に送る,という流れ. 
-かわり,Amazon SES は 465(smtpsだけでな587(submissionも動作することが分かった.+ 
 +/usr/local/etc/postfix/main.cf は以下. 
 + 
 +<code ini> 
 +smtp_use_tls = yes 
 +smtp_sender_dependent_authentication = yes 
 +sender_dependent_default_transport_maps = hash:/usr/local/etc/postfix/sender_relay 
 +smtp_sasl_auth_enable = yes 
 +smtp_sasl_security_options = noanonymous 
 +smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd 
 +smtp_always_send_ehlo = yes 
 +smtp_tls_policy_maps = hash:/usr/local/etc/postfix/tls_policy 
 +#smtp_tls_wrappermode = yes 
 +#smtp_tls_security_level = encrypt 
 +smtp_tls_security_level = may 
 +smtp_tls_note_starttls_offer = yes 
 +smtp_tls_cert_file = /usr/local/etc/letsencrypt/live/ns.sakaki.works/cert.pem 
 +smtp_tls_key_file = /usr/local/etc/letsencrypt/live/ns.sakaki.works/privkey.pem 
 +smtp_tls_CAfile = /usr/local/etc/letsencrypt/live/ns.sakaki.works/fullchain.pem 
 +</code> 
 + 
 +まずsmtp_sender_dependent_authentication を設定することで,sender_dependent_default_tarnsport_maps が有効になるように. sender_dependent_default_transport_maps には,以下のような sender_relay 情報を記述. 
 + 
 +<code ini> 
 +@bpsinc.jp                         smtps:email-smtp.us-west-2.amazonaws.com:587 
 +</code> 
 + 
 +Amazon SES から発行されているユーザ名とパスワード,tls_policy にて encrypt を指定した後,sasl_passwd に以下のように設定. 
 + 
 +sasl_passwd: \\ 
 +<code ini> 
 +email-smtp.us-west-2.amazonaws.com    ユーザ名:パスワード 
 +</code> 
 + 
 + 
 +tls_policy: \\ 
 +<code ini> 
 +email-smtp.us-west-2.amazonaws.com:587     encrypt 
 +</code> 
 + 
 +sender_relay, sasl_passwd, tls_policy は,それぞれ postmap コマンドを通すのを忘れないように. 
 + 
 + 
 +はまったのが,relay_host で SMTPS(465) で送信しようとすると,postfix の挙動全体で,\\ 
 +smtp_tls_wrappermode = yes\\ 
 +smtp_tls_security_level = encrypt\\ 
 +と書いた上で,25 番への relay ができいモードになってしまうと言う部分.これが,どうしても解決できずに,どこかで見た,submission ポート送ってみたら,ちゃんと認証した上で送信してくれることが分かったので,この設定にしておくことに
  
  
行 49: 行 106:
   * FreeBSD 12 で自宅サーバ作成 メールサーバ編:https://qiita.com/Chun3/items/dc0e176c9de4f6b4bfb8   * FreeBSD 12 で自宅サーバ作成 メールサーバ編:https://qiita.com/Chun3/items/dc0e176c9de4f6b4bfb8
     * DNS 〜 dovecot まで,かなり充実した記事.     * DNS 〜 dovecot まで,かなり充実した記事.
 +  * Amazon SES とポストフィックスの統合:https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/postfix.html
 +    * Amazon の書いてくれている文章.ここで submission port を利用していたので,465 に拘らずに行けることが分かった.
 +
  
 ===== dovecot 基本設定 ===== ===== dovecot 基本設定 =====
行 86: 行 146:
   zlib_save_level = 6   zlib_save_level = 6
 } }
 +</code>
 +
 +[2023-04-29] 
 +
 +追記:
 +
 +mdbox を見ても,テキストで保存されていた.
 +
 +plugin lda の中の mail_plugin にも zlib を追記しないと動かなかったかもしれない.
 +
 +<code>
 +protocol lda {
 +  deliver_log_format = msgid=%m: %$
 +  info_log_path = /var/log/dovecot-lda.log
 +  log_path = /var/log/dovecot-lda.log
 +  mail_plugins = sieve zlib
 +...
 </code> </code>
  
行 126: 行 203:
 doveadm の man の中に,色々なコマンドが書いてあり,doveadm-command という名前で man が準備されている. doveadm の man の中に,色々なコマンドが書いてあり,doveadm-command という名前で man が準備されている.
 基本的に root (または,mail ユーザ)でないと動作しない. 基本的に root (または,mail ユーザ)でないと動作しない.
 +
 +=== doveadm purge ===
 +== マニュアル ==
 +<code>% man doveadm-purge </code>
 +
 +== 基本 ==
 +メールに対しての 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・オンプレマシンの両方に必要.
  
-/usr/local/etc/dovecot/dovecot.conf:+/usr/local/etc/dovecot/dovecot.conf: 
 <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't finish+  # 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:
 </code> </code>
  
-doveadm user 出てくるユーザ全て同期する.特定ユーザのみ同期たくない場合は,dovecot.passwd.db (passwd-file) 対象ユーザに,以下のような記述をしてお+大事なのは,mail_replica の辺り,ssh 使う方法と TCP を使う方法が存在る. 
 + 
 +ssh 経由で行う場合は,root でログインを有効しないと行けないので,sshd において,以下のような設定をしておきつつ,鍵をお互いの root/.ssh/authorized_keys に登録すると良い
  
 <code> <code>
-username:{plain}hogehoge:5000:5000::/home/mail/%d/%n::userdb_noreplicate=y+## Okay allow root login with public ssh key for 210.160.237.138 ## 
 +Match Address 210.160.237.138 
 +        PermitRootLogin yes
 </code> </code>
  
 +今回は tcp を利用した.この場合,doveadm_password にて,お互いに共通のパスワードを書いておく必要がある.また,dsync_remote_cmd は必要ないと思われるが,消すのがめんどくさいので残してある.
  
  
-master/master 同期を行うためには,さくら VPS・オンプレマシン両方同じ設定書いておく必要がある+dsync では,doveadm user で出てくるユーザ全てを同期してしま.特定ユーザのみ同期しくない場合は,dovecot.passwd.db (passwd-file) 対象ユーザ,以下のような記述ておく.
  
 +<code>
 +username:{plain}hogehoge:5000:5000::/home/mail/%d/%n::userdb_noreplicate=y
 +</code>
  
-=== 参考情報 === +多くのページにて,userdb_ prefix がいらない,と書いてあった気がするが,結局つけなければ動作しなかった.
-Replication with dsync +
  
 +=== 参考情報 ===
 +  * Replication with dsync:https://doc.dovecot.org/configuration_manual/replication/ (manual)
 +  * Replication with dsync:https://wiki.dovecot.org/Replication (wiki)
 +    * 全ての情報が,この二つのページに集約されている.
 +  * https://orebibou.com/ja/home/201612/20161212_002/
 +    * 日本語情報.結構しっかりまとまっている.
  
 ===== 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}}
  
mail.1622094053.txt.gz · 最終更新: 2021/05/27 14:40 by skk
文書の先頭へ
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0