1と2のリビジョン間の差分
2021-03-24 06:19:02時点のリビジョン1
サイズ: 3164
コメント:
2021-03-25 13:57:39時点のリビジョン2
サイズ: 4792
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 8: 行 8:
   * つまりsendmailとcyrus imapdは同一サーバー内に存在するものとし、双方をコンテナ化で分離しない。    * つまりsendmailとcyrus imapdは同一サーバー内に存在するものとし、双方をコンテナ化で分離しない。
行 11: 行 11:
   * よってSASLAUTHD導入による権限分けは不要である。
 * `ports/mail/sendmail` をインストールするが現時点(2021年03月23日)でいくらか不備がある。
   * `cyruslookup.patch` にはいくつかのバグがあり [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254495|mail/sendmail: overhaul cyruslookup.patch]] にて修正依頼中。
   * SASLAUTHDの導入の動機として、権限分けにともなうミスマッチを解消する目的があるが、本構成では不要である。
 * `ports/mail/sendmail` をインストールするが現時点(2021年03月25日)でいくらか不備がある。
行 19: 行 18:
   * バーチャルドメインでの運用を前提とし、サーバー側のアカウント等の情報と完全に独立させる。
   * 従来の資料を読み解くと、この辺りが混在していて暗黙のウチに動作しているケース(エイリアスの適用など)があるが、今回それ一切許さない。
   * バーチャルドメインでの運用を前提とし、サーバー側のアカウント情報や各種設定独立して運用する。
   * 従来の資料を読み解くと、この辺りが混在していて暗黙のウチに動作しているケース(エイリアスの適用など)があるが、今回それ一切許さない。
行 45: 行 44:

== /usr/local/lib/sasl2/Sendmail.conf ==
{{{
pwcheck_method: auxprop
auxprop_plugin: sasldb
}}}

※SendmailのSASLサポートコードにはSASLの設定に関するコードが含まれておらず、
SASLライブラリがケアしてる設定ファイルにて設定を行う必要があります。

適用可能なオプションとしては下記の物がありますが、CyruIMAPd側の設定との調整を考えるとデフォルトのままで良いかと。

 * `sasldb_path`: SASLDBファイル(本件ではLMDB)のパス
 * `sasldb_mapsize`: 全ユーザーをオンメモリにマッピングするためのサイズ
 * `sasldb_maxreaders`: SASLDBファイルを同時アクセス可能な最大セッション(プロセス)数

特に `sasldb_mapsize` と `sasldb_maxreaders` はユーザー数が多くなってきたときに調整が必要となる。

※IMAPサーバー側で同時アクセス数のリークを確認。

{{{#!wiki note
SASLクライアントが参照すべき設定ファイル名は sasl_server_init() 関数に引き渡される appname 引数により決定される。
マニュアルに明記されてないケースで調査が必要な際は参考までに。

https://www.cyrusimap.org/sasl/sasl/reference/manpages/library/sasl_server_init.html

}}}

= 参考文献 =
 * [[https://www.cyrusimap.org/sasl/sasl/options.html|Cyrus SASL documentation — Options]]
 * [[https://www.cyrusimap.org/sasl/sasl/reference/manpages/library/sasl_server_init.html|sasl_server_init - SASL server authentication initialization]]

CyrusIMAPdとの連携運用

前提条件

  • 動作試験環境: FreeBSD12.2および13.0
  • 事前に OSのインストール および 環境構築 が済ませてあること。

  • 以下の観点からSASLAUTHDに依存しない。
    • 今回スケーラビリティ(スケールアウト)は考慮しない。
    • つまりsendmailとcyrus imapdは同一サーバー内に存在するものとし、双方をコンテナ化等で分離しない。
    • 認証(SMTP AUTH)は全てSASLDBを参照する。
    • またSASLDBを参照するにあたって、sendmailおよびcyrus imapd双方に権限上のミスマッチは存在していない。
    • SASLAUTHDの導入の動機として、権限分けにともなうミスマッチを解消する目的があるが、本構成では不要である。
  • ports/mail/sendmail をインストールするが現時点(2021年03月25日)でいくらか不備がある。

    • SSL回りの設定方法がいびつなので、これも修正していきたいです。
      • 現在のsendmailのSSL証明書の指定方法がよろしくない。
      • ECC暗号の使用がprime256v1のみに限定されている。
    • milterをインストール(コンパイル)する順番(依存)が存在しているが、見えにくい。
  • 設定目標としては以下の通りとする。
    • バーチャルドメインでの運用を前提とし、サーバー側のアカウント情報や各種設定とは独立して運用する。
    • 従来の資料を読み解くと、この辺りが混在していて暗黙のウチに動作しているケース(エイリアスの適用など)があるが、今回それを一切許さない。
    • サーバー側はサーバー側で(root宛のメールなど)、バーチャルドメイン側はバーチャルドメイン側で、切り離された環境を構築する。
    • その効能の一つとして、cyrus imapd側で持つメールボックスの存在確認をリアルタイムで行えるようにする。

/etc/make.conf

以下の内容を追記する。

# for sendmail
mail_sendmail_SET=    LA NIS SEM TLS DANE SASL SHMEM MILTER SMTPUTF8
mail_sendmail_SET+=   SOCKETMAP BLACKLISTD CYRUSLOOKUP PICKY_HELO_CHECK
mail_sendmail_UNSET=  BDB LDAP SASLAUTHD

/usr/local/etc/ports.conf

以下の内容を追記する。

mail/sendmail: CFLAGS=-O2 -pipe -DTLS_EC=2 -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE -D_FFR_TLS_ALTNAMES -D_FFR_QUEUE_GROUP_SORTORDER

インストール

cd /usr/ports/mail/sendmail && make install

/usr/local/lib/sasl2/Sendmail.conf

pwcheck_method: auxprop
auxprop_plugin: sasldb

※SendmailのSASLサポートコードにはSASLの設定に関するコードが含まれておらず、 SASLライブラリがケアしてる設定ファイルにて設定を行う必要があります。

適用可能なオプションとしては下記の物がありますが、CyruIMAPd側の設定との調整を考えるとデフォルトのままで良いかと。

  • sasldb_path: SASLDBファイル(本件ではLMDB)のパス

  • sasldb_mapsize: 全ユーザーをオンメモリにマッピングするためのサイズ

  • sasldb_maxreaders: SASLDBファイルを同時アクセス可能な最大セッション(プロセス)数

特に sasldb_mapsizesasldb_maxreaders はユーザー数が多くなってきたときに調整が必要となる。

※IMAPサーバー側で同時アクセス数のリークを確認。

SASLクライアントが参照すべき設定ファイル名は sasl_server_init() 関数に引き渡される appname 引数により決定される。 マニュアルに明記されてないケースで調査が必要な際は参考までに。

https://www.cyrusimap.org/sasl/sasl/reference/manpages/library/sasl_server_init.html

参考文献

sendmail/cyrus-imapd (最終更新日時 2022-01-06 10:49:07 更新者 NorikatsuShigemura)