TLS1.1 +レガシーCommuniGateバージョンのサポート

メールサーバーCommuniGate Proは、ロシアでよく知られ、人気があります。 これは本当に強力で非常に機能的なメールサーバーです(ただし、現在はVOIP / Messanger /など)。 しかし、彼には欠点もあります。 クローズドコードと非常に高価なライセンス。 ユーザー数だけでなく、更新時間も制限されます。 残念ながら、すべての状況で、更新されたライセンスの購入が可能または適切なわけではありません。 ただし、インターネットは変化しており、プロトコルに脆弱性が見つかっており、古いプロトコルのサポートは取り消されており、私たちも何らかの方法でそれに対応しなければなりません。



このタスクは、既存のシステムに大きなアーキテクチャの変更を加えることなく、レガシーユーザーがTLS1.1 / TLS1.2の承認とサポート付きでメールを送信できるようにすることです。 catの下で、PostfixおよびLDAPを使用した古いバージョン<5.1.3ommuniGateのTLS1.1 +のサポートを追加します。





クライアントの1人が、Googleアプリを使用してメールを送信できないという問題に対処し、そのデータを使用して古いsmtpにアクセスしました。 ログには、次のようなエラーがあります:

SMTPI-00139([xxxx]) failed to accept a secure connection on [xxxx] from [xxxx]. Error Code=TLS 'client-hello' format error
      
      







診断プロセス中に、暗号化された接続を確立するときに、GoogleサーバーがSSL3 / TLS1.0を使用したセッションの確立を拒否し、TLS1.1を使用しようとしたことが判明しました。

サーバーには、TLS1.1をサポートしない古いバージョン(すでに4.1.8)のCommuniGateがあります。 これは古い(すべての側からの旧式および非推奨)システムの一部であり、それ自体は更新されず、着信ストリーム(spf /アンチスパム)および発信(dkim /など)の外部接尾辞の形でアシスタントを既に受信しています。



当初、nginxオプションはフロントエンド(最初のsmtp、次にpop3 / imap)と見なされていました。これは最新バージョンのTLSをサポートし、要求を古いサーバーに透過的に転送しますが、smtp承認のプロキシをサポートしていないことがわかりましたが、追加するには追加のスクリプトが必要です認可。 複数のバックエンドサーバーが存在するという事実により、状況はさらに複雑になりました。 その結果、プログラミングを必要とせずに構成する簡単なオプションが見つかりました。



良いニュースは、CommuniGateが古いLDAPバージョンをサポートしていることです。 その結果、SASLモジュールを介してsmtp認証も提供できる、すでに部分的に使用されている後置が、フロントエンドの役割として最終的に選択されました。 Dovecotサーバーwww.dovecot.orgがSASL + LDAPレイヤーとして選択されました。 追加のimapサーバーコンポーネントの使用は複雑すぎるようですが、dovecotの魅力はモジュール性です。 その中のすべて(imap / pop3 / ssl / lmtp / Sieveモジュール、postgresql / mysql / sqliteサポートなど)を無効にし、必要な最小限、つまり必要なdovecot-auth承認デーモンとLDAPサポートのみを残すことができます。 私たちはそれをします。



だから。



Postfix + SASLの最小構成

/etc/postfix/main.cf

 ... smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes ...
      
      







Dovecotの構成

すべてのLDAPサーバーを1つのファイルで指定できることに注意してください

 hosts = mail1:3389 mail2:3389 mail3:3389
      
      







ただし、このセットアップでは、各LDAPサーバーがすべてのユーザーに関する情報を所有し、最初のエラーが発生するまでチェックが行われることを前提としています。 次のバージョンでは、すべてのサーバーでユーザー検証が実行されます。



Doveconfの出力

 root@smtp:~# doveconf -n # 2.1.7: /etc/dovecot/dovecot.conf # OS: Linux 3.2.0-4-686-pae i686 Debian 7.8 auth_cache_negative_ttl = 5 mins auth_cache_size = 10 M auth_cache_ttl = 5 mins auth_mechanisms = plain login cram-md5 listen = * passdb { args = /etc/dovecot/servers/mail1.conf driver = ldap } passdb { args = /etc/dovecot/servers/mail2.conf driver = ldap } passdb { args = /etc/dovecot/servers/mail3.conf driver = ldap } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } } #ssl  ,         ssl = no
      
      





テンプレートごとのLDAP接続構成ファイル

 /etc/dovecot/servers/mail1.conf hosts = mail1:3389 debug_level = 0 auth_bind = yes auth_bind_userdn = %u base =
      
      







LDAPセットアップの注釈

(CommuniGate LDAPモジュールに関する情報は、最新バージョンの場合、オフサイトとして検索および検索され、

www.communigate.com/communigatepro/LDAP.html

および実行中のサーバーの一部としての特定のバージョン

https://mail.domain.com:8010/Guide/LDAP.html

dovecot + ldapの設定のニュアンス

wiki2.dovecot.org/AuthDatabase/LDAP



スキーム「uid =%n、cn =%d」などは機能しませんでしたが、機能しました

auth_bind_userdn =%u

dovecotが特別な特権を提供しないオプションが選択されましたが、CommuniGateサーバーで受信したログインとパスワードを使用してログインしようとします。 速度が遅くなり、セキュリティが向上するため、追加の権限は必要ありません。



CommuniGateの構成



[設定]-> [アクセス]-> [LDAPクライアントにサービスを提供]で変更するか、単にLDAP.settingsファイルを追加してCommuniGateを再起動します。



 /etc/CommuniGate/Settings/LDAP.settings { Listener = { MaxConnectionsPerAddress = 10; MaxInputChannels = 10; Ports = ( { PortNumber = 3389; RestrictionData = "xxxx"; RestrictionType = Grant; } ); }; LogLevel = 2; }
      
      







承認済みメールドメインのLDAPサポートを有効にする必要があります。このバージョンではこれがデフォルトです。



メールデーモンを再起動した後、承認をテストします。

 root@smtp:/etc/dovecot/servers# doveadm auth mail@domain.com password passdb: mail@domain.com auth succeeded extra fields: user=mail@domain.com
      
      







auth_verbose = yesオプションが有効になっている場合、dovecotログに次のように表示されます。

 Feb 11 17:02:35 proxy dovecot: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth Feb 11 17:02:35 proxy dovecot: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth Feb 11 17:02:35 proxy dovecot: auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/libauthdb_ldap.so Feb 11 17:02:37 proxy dovecot: auth: Debug: auth client connected (pid=0) Feb 11 17:02:37 proxy dovecot: auth: Debug: client in: AUTH#0111#011PLAIN#011service=doveadm#011resp=<hidden> Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: ldap(mail@domain.com): invalid credentials Feb 11 17:02:37 proxy dovecot: auth: Debug: cache(mail@domain.com): miss Feb 11 17:02:37 proxy dovecot: auth: Debug: client out: OK#0111#011user=mail@domain.com
      
      







ユーザーは幸せです、世界のエントロピーの量はわずかに減少します:)



All Articles