dovecotをActive Directoryと連携させる

Windows Server 2025のActice Directoryサーバと連携したメールサーバを作って、dovecotでimap/pop3、postfixでsmtpを提供する、という設定を行うこととした。

まずは「Windows Server 2025で作ったActive Directory環境でldapsを使えるようにする」にあるようにActive Directoryサーバをldapsで使えるように設定した。

ただ、調べると、純正Windows ServeverのActice Directoryサーバとldapを使って連携させた場合、userPassword, unixUserPassword, msSFU30Password などのパスワード情報が配布されていないので連携が取れない、的なことが書いてある記事などがあった。

実際 ldapsearchを使って確認してみると取得できたもののなかに含まれていない。これはまずいのでは?といろいろ調べる羽目になった。(なお、最終的には ldapsearchでは取得できないけど dovecotの認証としてActive Directoryで設定したパスワードがそのまま利用できることを確認できました)

# ldapsearch -x -H ldaps://192.168.122.10 -D "cn=vmail,cn=Users,dc=adsample,dc=local" -w "パスワード" -b "cn=Users,dc=adsample,dc=local" samAccountName=testuser1
# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=adsample,dc=local> with scope subtree
# filter: samAccountName=testuser1
# requesting: ALL
#

# testuser1, Users, adsample.local
dn: CN=testuser1,CN=Users,DC=adsample,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: testuser1
givenName: testuser1
distinguishedName: CN=testuser1,CN=Users,DC=adsample,DC=local
instanceType: 4
whenCreated: 20250417094618.0Z
whenChanged: 20250425001141.0Z
displayName: testuser1
uSNCreated: 12609
uSNChanged: 36883
name: testuser1
objectGUID:: H4j5I6UhEEaDahAIt64JeA==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 133900185974014530
lastLogoff: 0
lastLogon: 133900186129696391
pwdLastSet: 133893567784742554
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAArlEnuz4EHgKbAhGoTwQAAA==
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: testuser1
sAMAccountType: 805306368
userPrincipalName: testuser1@adsample.local
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=adsample,DC=local
dSCorePropagationData: 20250418015428.0Z
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 133900135017739905
mail: testuser1@example.com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
#

じゃあ、と回避策を探すと sssd を使ってLinux OSごとActive Directoryに参加させて、pam+sssdで認証を行う、という手法がある。この場合、Linux OS上に各アカウントのUIDがsssd経由で自動発行されディレクトリが作られていくことになる。

vmailアカウントで1つにまとめるvirtual boxタイプでやりようがないのかなぁ、と、とりあえず試してみることにした。

まずはRedHatのドキュメント「メールサーバーサービスの設定および維持」にある「1.2. LDAP 認証を使用した Dovecot サーバーのセットアップ」を参考に設定を実施

dovecotインストール

まず、dovecotをインストール

[root@mail ~]# dnf install dovecot
Last metadata expiration check: 0:15:03 ago on Fri Apr 25 02:14:57 2025.
Dependencies resolved.
================================================================================
 Package        Arch    Version                                Repository  Size
================================================================================
Installing:
 dovecot        x86_64  1:2.3.16-14.el9                        appstream  4.7 M
Installing dependencies:
 clucene-core   x86_64  2.3.3.4-42.20130812.e8e3d20git.el9     appstream  585 k
 libexttextcat  x86_64  3.4.5-11.el9                           appstream  209 k
 libicu         x86_64  67.1-9.el9                             baseos     9.6 M
 libstemmer     x86_64  0-18.585svn.el9                        appstream   82 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 15 M
Installed size: 53 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): clucene-core-2.3.3.4-42.20130812.e8e3d20 582 kB/s | 585 kB     00:01    A
(2/5): libexttextcat-3.4.5-11.el9.x86_64.rpm    207 kB/s | 209 kB     00:01
(3/5): libstemmer-0-18.585svn.el9.x86_64.rpm    995 kB/s |  82 kB     00:00
(4/5): dovecot-2.3.16-14.el9.x86_64.rpm         1.3 MB/s | 4.7 MB     00:03
(5/5): libicu-67.1-9.el9.x86_64.rpm             1.2 MB/s | 9.6 MB     00:07
--------------------------------------------------------------------------------
Total                                           1.3 MB/s |  15 MB     00:11
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : libicu-67.1-9.el9.x86_64                               1/5
  Installing       : libstemmer-0-18.585svn.el9.x86_64                      2/5
  Installing       : libexttextcat-3.4.5-11.el9.x86_64                      3/5
  Installing       : clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_   4/5
  Running scriptlet: dovecot-1:2.3.16-14.el9.x86_64                         5/5
  Installing       : dovecot-1:2.3.16-14.el9.x86_64                         5/5
  Running scriptlet: dovecot-1:2.3.16-14.el9.x86_64                         5/5
  Verifying        : clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_   1/5
  Verifying        : dovecot-1:2.3.16-14.el9.x86_64                         2/5
  Verifying        : libexttextcat-3.4.5-11.el9.x86_64                      3/5
  Verifying        : libstemmer-0-18.585svn.el9.x86_64                      4/5
  Verifying        : libicu-67.1-9.el9.x86_64                               5/5

Installed:
  clucene-core-2.3.3.4-42.20130812.e8e3d20git.el9.x86_64
  dovecot-1:2.3.16-14.el9.x86_64
  libexttextcat-3.4.5-11.el9.x86_64
  libicu-67.1-9.el9.x86_64
  libstemmer-0-18.585svn.el9.x86_64

Complete!
[root@mail ~]#

dovecot用自己証明書作成

dovecot用に自己証明書を作成するけど、標準だと有効期限1年なので変更して作成する

まずは/etc/pki/dovecot/dovecot-openssl.cnf に適切なホスト名と管理者メールアドレスを記載する

[root@mail ~]# cat /etc/pki/dovecot/dovecot-openssl.cnf
[ req ]
default_bits = 3072
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# country (2 letter code)
#C=FI

# State or Province Name (full name)
#ST=

# Locality Name (eg. city)
#L=Helsinki

# Organization (eg. company)
#O=Dovecot

# Organizational Unit Name (eg. section)
OU=IMAP server

# Common Name (*.example.com is also possible)
CN=mail.adsample.local

# E-mail contact
emailAddress=postmaster@adsample.local

[ cert_type ]
nsCertType = server
[root@mail ~]#

次に通常はdovecot初回起動時に /usr/share/doc/dovecot/mkcert.sh を実行して自己証明書を作成しているのだが、このスクリプト内で「-days 365」と書かれているから有効期限が1年になっているので、コピーして「-days 3650」などに修正する

[root@mail ~]# cp /usr/share/doc/dovecot/mkcert.sh .
[root@mail ~]# vi mkcert.sh
[root@mail ~]# diff -u /usr/share/doc/dovecot/mkcert.sh mkcert.sh
--- /usr/share/doc/dovecot/mkcert.sh    2024-10-03 05:08:31.000000000 +0900
+++ mkcert.sh   2025-04-25 02:55:09.510440927 +0900
@@ -34,7 +34,7 @@
   exit 1
 fi

-$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 365 || exit 2
+$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 3650 || exit 2
 chown root:root $CERTFILE $KEYFILE
 chmod 0600 $CERTFILE $KEYFILE
 echo
[root@mail ~]#

で、修正したmkcert.shを実行して証明書を作成

[root@mail ~]# bash mkcert.sh
/etc/pki/dovecot/certs/dovecot.pem already exists, won't overwrite
[root@mail ~]# rm /etc/pki/dovecot/certs/dovecot.pem
rm: remove regular file '/etc/pki/dovecot/certs/dovecot.pem'? y
[root@mail ~]# rm /etc/pki/dovecot/private/dovecot.pem
rm: remove regular file '/etc/pki/dovecot/private/dovecot.pem'? y
[root@mail ~]# bash mkcert.sh
..+...+......+.....+....+..............+.+.....+.........++++++++++++++++++++++++++++++++++++++++++*..+....+......+........+......+....+............++++++++++++++++++++++++++++++++++++++++++*....+......+.+...+.....+......+...................+......+...+...+.....+...+.+...+.....................+............+.........+.....+.....................+.............+.........+...........+....+.....+.+..............+.......+........+.............+.....+..........+............+.....+..........+...+..+.+.....+.......+..+.+.....+.........+...+.......+..+.+..+..................+.......+..+...+.+....................+.+.........+.....+....+...+...+............+.....+.......+..+......+.......+...+...............+..+...+....+...........+....+........+.+......+........+...............+.......+........................+.........+..+....+......+.........+..+..................+....+......+............+.....+....+........+.......+.....+.+.....+...+......+..........+.........+++++
.........+.+..+....+...+...+...++++++++++++++++++++++++++++++++++++++++++*..........+...+.................+...+...++++++++++++++++++++++++++++++++++++++++++*.......+.....+....+..............+......+.........+.......+...+..+................+.....+.......+..+.........+....+......+..+..................+.........+......+............+.............+..+...+....+...............+...........+..........+.........+...+...+++++
-----

subject=OU=IMAP server, CN=mail.adsample.local, emailAddress=postmaster@adsample.local
SHA1 Fingerprint=DD:2E:9B:1A:6A:84:07:03:EF:6E:7F:D4:7A:03:39:F0:24:FC:0E:2A
[root@mail ~]# 

ファイルが作成され、「openssl x509 -noout -dates -in ファイル名」を実行し有効期限が約10年であることを確認

[root@mail ~]# ls -ltR /etc/pki/dovecot/
/etc/pki/dovecot/:
total 8
drwxr-xr-x. 2 root root  25 Apr 25 02:56 certs
drwxr-xr-x. 2 root root  25 Apr 25 02:56 private
-rw-r--r--. 1 root root 502 Apr 25 02:45 dovecot-openssl.cnf
-rw-r--r--. 1 root root 496 Apr 25 02:45 dovecot-openssl.cnf.org

/etc/pki/dovecot/certs:
total 4
-rw-------. 1 root root 1619 Apr 25 02:56 dovecot.pem

/etc/pki/dovecot/private:
total 4
-rw-------. 1 root root 2484 Apr 25 02:56 dovecot.pem
[root@mail ~]# openssl x509 -noout -dates -in /etc/pki/dovecot/certs/dovecot.pem
notBefore=Apr 24 17:56:04 2025 GMT
notAfter=Apr 22 17:56:04 2035 GMT
[root@mail ~]#

続いてRedHatのページにも記載されているDiffie-Hellmanパラメータファイル作成

[root@mail ~]# openssl dhparam -out /etc/dovecot/dh.pem 4096
Generating DH parameters, 4096 bit long safe prime
.....................................................+........................................................+.........................................................+......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+.................................................................................................................+.....................................................................................................................+..........................................+.......................................................+...................................................................................+....................................................................................................................................................................................................................................................................+......................................................+......+..........................................+........................................+..............................................................................................................................................................................+......................................................................................................................................................................................................................................................................................................................................................................................................................................................+.............................................................................................................................................................................................................................................................................+...........................................................................................................................................................+............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+........................+...............................................+.....................................................................................................................+......................................................................................................................................................................................................................................................................................................................................................................+........................................................................................................................................................................................................................................................+......................................................................................................+.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+.......................................................................................................................................................................................................................+.......................................................................................................................................+...................................................................................................................................................................................................................................+....................................................................................................................................................................................................................................................................+...+....................................................................................................................................................................................................................................................+........+........+..................................................................................................................................................................................................................................................................................................................+......................................................+...........................................................................................................................................................................+..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+....................................................................+...........+.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+.........................................................................................................................................................................................................................................................................................................................................................+....+........................................................................................................................................................................................................................................................................................................................................+......+...................................................................................................................................................................................................................................................................................................................................................+........................................................................................................................................................................................................................................+............................+...............................................................+.......................................................................................................................................................................................................................................+..............................................................................................................................................................................................................................................+..........................................................................................................................................................................................................+................................................................................+......................................................................................+.........................................................................................................................................+..............................................++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*
[root@mail ~]# ls -l /etc/dovecot/dh.pem
-rw-r--r--. 1 root root 773 Apr 25 03:02 /etc/dovecot/dh.pem
[root@mail ~]#

/etc/dovecot/conf.d/10-ssl.conf に証明書ファイルとDiffie-Hellmanパラメータファイルの登録

ssl_certとssl_keyは標準値のまま
ssl_ca については登録せず
ssl_shのコメントを外す

[root@mail postfix]# cat /etc/dovecot/conf.d/10-ssl.conf
##
## SSL settings
##

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = no

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

# If key file is password protected, give the password here. Alternatively
# give it when starting dovecot with -p parameter. Since this file is often
# world-readable, you may want to place this setting instead to a different
# root owned 0600 file by using ssl_key_password = <path.
#ssl_key_password =

# PEM encoded trusted certificate authority. Set this only if you intend to use
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/pki/dovecot/certs/ca.pem)
#ssl_ca =

# Require that CRL check succeeds for client certificates.
#ssl_require_crl = yes

# Directory and/or file for trusted SSL CA certificates. These are used only
# when Dovecot needs to act as an SSL client (e.g. imapc backend or
# submission service). The directory is usually /etc/pki/dovecot/certs in
# Debian-based systems and the file is /etc/pki/tls/cert.pem in
# RedHat-based systems. Note that ssl_client_ca_file isn't recommended with
# large CA bundles, because it leads to excessive memory usage.
#ssl_client_ca_dir =
#ssl_client_ca_file =

# Require valid cert when connecting to a remote server
#ssl_client_require_valid_cert = yes

# Request client to send a certificate. If you also want to require it, set
# auth_ssl_require_client_cert=yes in auth section.
#ssl_verify_client_cert = no

# Which field from certificate to use for username. commonName and
# x500UniqueIdentifier are the usual choices. You'll also need to set
# auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName

# SSL DH parameters
# Generate new params with `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Or migrate from old ssl-parameters.dat file with the command dovecot
# gives on startup when ssl_dh is unset.
ssl_dh = </etc/dovecot/dh.pem

# Minimum SSL protocol version to use. Potentially recognized values are SSLv3,
# TLSv1, TLSv1.1, TLSv1.2 and TLSv1.3, depending on the OpenSSL version used.
#
# Dovecot also recognizes values ANY and LATEST. ANY matches with any protocol
# version, and LATEST matches with the latest version supported by library.
#ssl_min_protocol = TLSv1.2

# SSL ciphers to use, the default is:
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
# To disable non-EC DH, use:
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
ssl_cipher_list = PROFILE=SYSTEM

# Colon separated list of elliptic curves to use. Empty value (the default)
# means use the defaults from the SSL library. P-521:P-384:P-256 would be an
# example of a valid value.
#ssl_curve_list =

# Prefer the server's order of ciphers over client's.
#ssl_prefer_server_ciphers = no

# SSL crypto device to use, for valid values run "openssl engine"
#ssl_crypto_device =

# SSL extra options. Currently supported options are:
#   compression - Enable compression.
#   no_ticket - Disable SSL session tickets.
#ssl_options =
[root@mail postfix]#

また、標準設定のままだとSSLが必須(ssl=required)になっているので、なくてもよい「ssl=yes」に変更します。

[root@mail ~]# vi /etc/dovecot/conf.d/10-ssl.conf
[root@mail ~]# diff -u /etc/dovecot/conf.d/10-ssl.conf.org /etc/dovecot/conf.d/10-ssl.conf
--- /etc/dovecot/conf.d/10-ssl.conf.org 2025-04-25 03:03:27.865411037 +0900
+++ /etc/dovecot/conf.d/10-ssl.conf     2025-04-25 03:28:09.900322146 +0900
@@ -5,7 +5,7 @@
 # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
 # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
 # plain imap and pop3 are still allowed for local connections
-ssl = required
+ssl = yes

 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
 # dropping root privileges, so keep the key file unreadable by anyone but
@@ -53,7 +53,7 @@
 # Generate new params with `openssl dhparam -out /etc/dovecot/dh.pem 4096`
 # Or migrate from old ssl-parameters.dat file with the command dovecot
 # gives on startup when ssl_dh is unset.
-#ssl_dh = </etc/dovecot/dh.pem
+ssl_dh = </etc/dovecot/dh.pem

 # Minimum SSL protocol version to use. Potentially recognized values are SSLv3,
 # TLSv1, TLSv1.1, TLSv1.2 and TLSv1.3, depending on the OpenSSL version used.
[root@mail ~]#

メール管理用ユーザ作成

メール管理ユーザとしてRHELドキュメントにあるように「vmail」ユーザを作成

[root@mail ~]# useradd --home-dir /var/mail --shell /usr/sbin/nologin vmail
useradd: warning: the home directory /var/mail already exists.
useradd: Not copying any file from skel directory into it.
[root@mail ~]#

[root@mail ~]# id vmail
uid=1000(vmail) gid=1000(vmail) groups=1000(vmail)
[root@mail ~]#

上記でホームディレクトリを /var/mail で指定しているが、すでに存在しているディレクトリであるため、現存する/var/mailの所有者を変更する。

[root@mail ~]# ls -ld /var/mail
lrwxrwxrwx. 1 root root 10 Oct  3  2024 /var/mail -> spool/mail
[root@mail ~]# ls -ld /var/spool/mail
drwxrwxr-x. 2 root mail 19 Apr 25 03:11 /var/spool/mail
[root@mail ~]#
[root@mail ~]# chown vmail:vmail /var/mail/
[root@mail ~]# chmod 700 /var/mail/
[root@mail ~]# ls -ld /var/mail
lrwxrwxrwx. 1 root root 10 Oct  3  2024 /var/mail -> spool/mail
[root@mail ~]# ls -ld /var/mail/
drwx------. 2 vmail vmail 19 Apr 25 03:11 /var/mail/
[root@mail ~]# ls -ld /var/spool/mail
drwx------. 2 vmail vmail 19 Apr 25 03:11 /var/spool/mail
[root@mail ~]# ls -ld /var/spool/mail/
drwx------. 2 vmail vmail 19 Apr 25 03:11 /var/spool/mail/
[root@mail ~]#

/etc/dovecot/conf.d/10-mail.conf にメール保存先のディレクトリ設定「mail_location = sdbox:/var/mail/%n/」を追加

(なお、sdboxという指定だと dbox Mailbox Formatのsingle-dbox形式、になっていて、maildir形式にしたい場合は maildir と書く必要がありました。あとで”mail_location = maildir:/var/mail/%n/Maildir”に修正しています )

[root@mail ~]# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.org
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
[root@mail ~]# diff -u /etc/dovecot/conf.d/10-mail.conf.org /etc/dovecot/conf.d/10-mail.conf
--- /etc/dovecot/conf.d/10-mail.conf.org        2025-04-25 03:13:54.044373479 +0900
+++ /etc/dovecot/conf.d/10-mail.conf    2025-04-25 03:14:17.970372044 +0900
@@ -27,7 +27,7 @@
 #
 # <doc/wiki/MailLocation.txt>
 #
-#mail_location =
+mail_location = sdbox:/var/mail/%n/

 # If you need to set multiple mailbox locations or want to change default
 # namespace settings, you can do it by defining namespace sections.
[root@mail ~]#

LDAPとの連携設定

まずは /etc/dovecot/conf.d/10-auth.conf で auth-system.conf.ext ファイルの読み込みをやめ、 auth-ldap.conf.ext ファイルを読み込む設定に修正

[root@mail ~]# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.org
[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf
[root@mail ~]# diff -u /etc/dovecot/conf.d/10-auth.conf.org /etc/dovecot/conf.d/10-auth.conf
--- /etc/dovecot/conf.d/10-auth.conf.org        2025-04-25 03:15:55.357366203 +0900
+++ /etc/dovecot/conf.d/10-auth.conf    2025-04-25 03:16:28.351364224 +0900
@@ -119,9 +119,9 @@
 #!include auth-deny.conf.ext
 #!include auth-master.conf.ext

-!include auth-system.conf.ext
+#!include auth-system.conf.ext
 #!include auth-sql.conf.ext
-#!include auth-ldap.conf.ext
+!include auth-ldap.conf.ext
 #!include auth-passwdfile.conf.ext
 #!include auth-checkpassword.conf.ext
 #!include auth-static.conf.ext
[root@mail ~]#

/etc/dovecot/conf.d/auth-ldap.conf.ext の userdb について override_fileds 設定を追加します

[root@mail ~]# cp /etc/dovecot/conf.d/auth-ldap.conf.ext /etc/dovecot/conf.d/auth-ldap.conf.ext.org
[root@mail ~]# vi /etc/dovecot/conf.d/auth-ldap.conf.ext
[root@mail ~]# diff -u /etc/dovecot/conf.d/auth-ldap.conf.ext.org /etc/dovecot/conf.d/auth-ldap.conf.ext
--- /etc/dovecot/conf.d/auth-ldap.conf.ext.org  2025-04-25 03:17:04.099362080 +0900
+++ /etc/dovecot/conf.d/auth-ldap.conf.ext      2025-04-25 03:17:39.663359947 +0900
@@ -7,6 +7,7 @@

   # Path for LDAP configuration file, see example-config/dovecot-ldap.conf.ext
   args = /etc/dovecot/dovecot-ldap.conf.ext
+  override_fields = uid=vmail gid=vmail home=/var/mail/%n/
 }

 # "prefetch" user database means that the passdb already provided the
[root@mail ~]#

uidとgidについて、vmailという文字列ではなく、実際のUID/GIDの数値を指定しなければならないかな?と思って両方試してみましたが、どちらでも動作しました。
(「override_fields = uid=1000 gid=1000 home=/var/mail/%n/」でも大丈夫だった)

次に、LDAP検索用ファイル/etc/dovecot/dovecot-ldap.conf.extを新規で作成….が、いろいろあったので、詳しいところは後回しにします。

firewall設定

標準だとポートが開けられていないので、必要に応じて開けます

まず初期状況確認

[root@mail ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@mail ~]#

メール系ポートを開けていきます。この記事はdovecot(imapとpop3)についてなので、imapとpop3について追加します

[root@mail ~]# firewall-cmd --permanent --add-service imaps --add-service imap 
success
[root@mail ~]# firewall-cmd --permanent --add-service pop3 --add-service pop3s
success
[root@mail ~]# firewall-cmd --reload
success
[root@mail ~]#  firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: cockpit dhcpv6-client imap imaps pop3 pop3s ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@mail ~]#

dovecotの起動登録

標準だと起動してこないdovecotを起動してくるように設定を入れます

[root@mail ~]# systemctl status dovecot
○ dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; preset:>
     Active: inactive (dead)
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
[root@mail ~]# systemctl enable --now dovecot
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service.
[root@mail ~]# systemctl status dovecot
● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: >
     Active: active (running) since Fri 2025-04-25 03:24:50 JST; 2s ago
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
    Process: 2180 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited>
   Main PID: 2186 (dovecot)
     Status: "v2.3.16 (7e2e900c1a) running"
      Tasks: 4 (limit: 10873)
     Memory: 5.3M
        CPU: 92ms
     CGroup: /system.slice/dovecot.service
             tq2186 /usr/sbin/dovecot -F
             tq2187 dovecot/anvil
             tq2188 dovecot/log
             mq2189 dovecot/config

Apr 25 03:24:50 mail.adsample.local systemd[1]: Starting Dovecot IMAP/POP3 emai>
Apr 25 03:24:50 mail.adsample.local dovecot[2186]: master: Dovecot v2.3.16 (7e2>
Apr 25 03:24:50 mail.adsample.local systemd[1]: Started Dovecot IMAP/POP3 email>
[root@mail ~]#

Active Directoryサーバを利用するのに必要なLDAP設定の調査

RHELのドキュメントに記載されているものは、OpenLDAPサーバを利用した場合の設定で、Windows Serverをベースとした場合、posixAccountに関する情報は標準では提供されていないため利用できません。

このため、Active DirectoryのLDAPで利用できる情報は何かをldapsearchコマンドを実行しながら確認していきます。

とりあえず先に調査した結果、これでいけるな、となったものは以下です

[root@mail ~]# cat /etc/dovecot/dovecot-ldap.conf.ext
# LDAPサーバへの接続に関する設定
uris=ldaps://192.168.122.10
auth_bind=yes
dn= cn=vmail,cn=Users,dc=adsample,dc=local
dnpass= パスワード

# LDAPの検索
base= cn=Users,dc=adsample,dc=local
scope=subtree

# 検索結果に対するフィルター
user_filter= (samAccountName=%u)
pass_filter= (samAccountName=%u)
[root@mail ~]#

各項に関して解説します

接続先のLDAPサーバの指定を「uris=ldaps://サーバ名」で行います

古い資料では「server_host=ホスト名」と「server_port=389」になっていたりしますが、現代は「uris=ldap://サーバ名」か「uris=ldaps://サーバ名」です

2025年現在のLDAPサーバではセキュリティ強化のためユーザ認証を行わないとLDAP上の情報を検索できないようになっています。このため「auth_bind=yes」で、認証を行うようにします。

「dn=」で指定しているのがユーザ検索に使用するActive Directory上のユーザ指定です。今回は「vmail」というユーザを作成していますので、それを指定しています。

続く「dnpass=」は上記ユーザに設定したActive Directoryでのパスワードです。平文でそのまま記載します。

次はLDAPから情報を引っ張ってくるのに使う設定です

Active Directoryでユーザに関する情報は「cn=Users,dc=adsample,dc=local」に入ってるので、それを使用します。

ldapsearchコマンドを使うことでどういった情報が取得できるかを確認することができます。

「-D」のオプションとしてdn=の後ろに入力したもの
「-b」のオプションとしてbase=の後ろに入力したもの

[root@mail ~]#  ldapsearch -x -H ldaps://192.168.122.10 -D "cn=vmail,cn=Users,dc=adsample,dc=local" -w "パスワード" -b "cn=Users,dc=adsample,dc=local" -s subtree
# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=adsample,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# Users, adsample.local
dn: CN=Users,DC=adsample,DC=local
objectClass: top
objectClass: container
cn: Users
description: Default container for upgraded user accounts
distinguishedName: CN=Users,DC=adsample,DC=local
instanceType: 4
whenCreated: 20250417093642.0Z
whenChanged: 20250417093642.0Z
uSNCreated: 5672
uSNChanged: 5672
showInAdvancedViewOnly: FALSE
name: Users
objectGUID:: 0+Pn0tolgUSaHrCO7ll4VQ==
systemFlags: -1946157056
objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=adsample,DC=local
isCriticalSystemObject: TRUE
dSCorePropagationData: 20250417093820.0Z
dSCorePropagationData: 16010101000001.0Z

# testuser1, Users, adsample.local
dn: CN=testuser1,CN=Users,DC=adsample,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: testuser1
givenName: testuser1
distinguishedName: CN=testuser1,CN=Users,DC=adsample,DC=local
instanceType: 4
whenCreated: 20250417094618.0Z
whenChanged: 20250425001141.0Z
displayName: testuser1
uSNCreated: 12609
uSNChanged: 36883
name: testuser1
objectGUID:: H4j5I6UhEEaDahAIt64JeA==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 133900339076624909
lastLogoff: 0
lastLogon: 133900339256453379
pwdLastSet: 133893567784742554
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAArlEnuz4EHgKbAhGoTwQAAA==
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: testuser1
sAMAccountType: 805306368
userPrincipalName: testuser1@adsample.local
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=adsample,DC=local
dSCorePropagationData: 20250418015428.0Z
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 133900135017739905
mail: testuser1@example.com

# testuser2, Users, adsample.local
dn: CN=testuser2,CN=Users,DC=adsample,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: testuser2
givenName: testuser2
<略>

# search result
search: 2
result: 0 Success

# numResponses: 32
# numEntries: 31
[root@mail ~]#

まあ、たくさんの情報が出てきてしまいます。

これの範囲を狭くするための設定がfilterです

user_filter がユーザ名を検索するときに使うフィルターで、 pass_filter がそのユーザのパスワードを検索する際に使うフィルターです
注意点は、これは検索した結果を狭めるために設定するもので、ユーザ名やパスワードとしてみなす値が何なのかを指定するものではありません。

上の例では「user_filter= (samAccountName=%u)」「pass_filter= (samAccountName=%u)」としています。

%uが imap/pop3でアクセスしたときに入力したユーザ名に置き換えられますので、ユーザがtestuser1でログインしたときに使用されるフィルターは「samAccountName=testuser1」となります。

この時にどのような値が取得できるかをldapsearchで確認するには、以下のように最後にフィルター文字列を指定して実行します。

[root@mail ~]#  ldapsearch -x -H ldaps://192.168.122.10 -D "cn=vmail,cn=Users,dc=adsample,dc=local" -w "パスワード" -b "cn=Users,dc=adsample,dc=local" -s subtree samAccountName=testuser1
# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=adsample,dc=local> with scope subtree
# filter: samAccountName=testuser1
# requesting: ALL
#

# testuser1, Users, adsample.local
dn: CN=testuser1,CN=Users,DC=adsample,DC=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: testuser1
givenName: testuser1
distinguishedName: CN=testuser1,CN=Users,DC=adsample,DC=local
instanceType: 4
whenCreated: 20250417094618.0Z
whenChanged: 20250425001141.0Z
displayName: testuser1
uSNCreated: 12609
uSNChanged: 36883
name: testuser1
objectGUID:: H4j5I6UhEEaDahAIt64JeA==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 133900339076624909
lastLogoff: 0
lastLogon: 133900339256453379
pwdLastSet: 133893567784742554
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAArlEnuz4EHgKbAhGoTwQAAA==
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: testuser1
sAMAccountType: 805306368
userPrincipalName: testuser1@adsample.local
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=adsample,DC=local
dSCorePropagationData: 20250418015428.0Z
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 133900135017739905
mail: testuser1@example.com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
[root@mail ~]#

じゃあ、上記ででてきた値のうち、どれをユーザ名やパスワードとして認識させるんだ、という話なんですが、おそらく user_attrs と pass_attrs なんだと思われるのですが、いまいち動作が確認できませんでした。

上で示した設定では ユーザ名を使っていましたが「ユーザ名 @ドメイン名」でログインできるようにする場合は samAccountName ではなく userPrincipalNameを使うことでログインできるようになりました。

[root@mail ~]# cat /etc/dovecot/dovecot-ldap.conf.ext
# LDAPサーバへの接続に関する設定
uris=ldaps://192.168.122.10
auth_bind=yes
dn= cn=vmail,cn=Users,dc=adsample,dc=local
dnpass= パスワード

# LDAPの検索
base= cn=Users,dc=adsample,dc=local
scope=subtree

# 検索結果に対するフィルター
user_filter= (userPrincipalName=%u)
pass_filter= (userPrincipalName=%u)
[root@mail ~]#

で・・・パスワードとして使えるらしい userPassword, unixUserPassword, msSFU30Password  は ldapsearchの出力結果に出てこないのですが、doveadmコマンドで確認してみると、ちゃんとActive Directoryに設定したパスワードで認証が通ることが確認できました。

dovecotの動作確認

dovecotのコマンド「doveadm auth login ユーザ名」で認証がちゃんと動くかという検証ができます。

最初のユーザ名だけでログインできる場合は以下

[root@mail ~]# doveadm auth login testuser1
Password:
passdb: testuser1 auth succeeded
extra fields:
  user=testuser1
userdb extra fields:
  testuser1@adsample.local
  uid=1000
  gid=1000
  home=/var/mail/testuser1/
  auth_mech=PLAIN
  auth_user=testuser1
[root@mail ~]#

ドメイン名付きで設定した場合は以下

[root@mail ~]# doveadm auth login testuser1@adsample.local
Password:
passdb: testuser1@adsample.local auth succeeded
extra fields:
  user=testuser1@adsample.local
userdb extra fields:
  testuser1@adsample.local
  uid=1000
  gid=1000
  home=/var/mail/testuser1/
  auth_mech=PLAIN
[root@mail ~]#

うまく動かなかった場合は、dovecotのログ出力を増やします。

設定のon/offがしやすいように /etc/dovecot/conf.d/99-debug.conf というファイルを新規作成しました。

[root@mail ~]# cat /etc/dovecot/conf.d/99-debug.conf
auth_debug=yes
auth_debug_passwords=yes
auth_verbose=yes
auth_verbose_passwords=yes
verbose_proctitle=yes
verbose_ssl=yes

[root@mail ~]#

この設定の注意点は「auth_debug_passwords=yes」と「auth_verbose_passwords=yes」です。エラー時にパスワードとして入力した文字列がログファイルに記録されてしまうので、取り扱いに注意してください。

例えば、ドメイン名ありでログインしなければならないのにユーザ名のみでログインしようとした場合のエラーとログは以下のようになりました。

[root@mail ~]# doveadm auth login testuser1
Password:
passdb: testuser1 auth failed
extra fields:
  user=testuser1
[root@mail ~]#
[root@mail ~]# tail -f /var/log/maillog
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/lib20_auth_var_expand_crypt.so
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: Read auth token secret from /run/dovecot/auth-token-secret.dat
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: ldap(/etc/dovecot/dovecot-ldap.conf.ext): LDAP initialization took 24 msecs
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: auth client connected (pid=3334)
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: client in: AUTH#0111#011PLAIN#011service=doveadm#011debug#011resp=dGVzdHVzZXIxAHRlc3R1c2VyMQBkaWdpdGFsMTIzQSM= (previous base64 data may contain sensitive data)
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: ldap(testuser1): Performing passdb lookup
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: ldap(testuser1): bind search: base=cn=Users,dc=adsample,dc=local filter=(userPrincipalName=testuser1)
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: ldap(testuser1): no fields returned by the server
Apr 25 18:47:01 mail dovecot[3326]: auth: ldap(testuser1): unknown user (given password: パスワード)
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: ldap(testuser1): Finished passdb lookup
Apr 25 18:47:01 mail dovecot[3326]: auth: Debug: auth(testuser1): Auth request finished
Apr 25 18:47:03 mail dovecot[3326]: auth: Debug: client passdb out: FAIL#0111#011user=testuser1

「auth_debug_passwords=yes」と「auth_verbose_passwords=yes」を設定しているのでパスワード文字列が出力されています。

正しくログインできた場合のログは下記のようになります。

[root@mail ~]# tail -f /var/log/maillog
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/lib20_auth_var_expand_crypt.so
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Apr 25 18:49:05 mail dovecot[3326]: auth: Debug: Read auth token secret from /run/dovecot/auth-token-secret.dat
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(/etc/dovecot/dovecot-ldap.conf.ext): LDAP initialization took 20 msecs
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: auth client connected (pid=3337)
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: client in: AUTH#0111#011PLAIN#011service=doveadm#011debug#011resp=dGVzdHVzZXIxQGFkc2FtcGxlLmxvY2FsAHRlc3R1c2VyMUBhZHNhbXBsZS5sb2NhbABkaWdpdGFsMTIzQSM= (previous base64 data may contain sensitive data)
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): Performing passdb lookup
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): bind search: base=cn=Users,dc=adsample,dc=local filter=(userPrincipalName=testuser1@adsample.local)
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): no fields returned by the server
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): result:  uid missing
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): Finished passdb lookup
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: auth(testuser1@adsample.local): Auth request finished
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: client passdb out: OK#0111#011user=testuser1@adsample.local
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: master in: REQUEST#0114040032257#0113337#0111#0119908c30ac4ecc1214e5ca9f458d737ff#011session_pid=3337
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): Performing userdb lookup
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): user search: base=cn=Users,dc=adsample,dc=local scope=subtree filter=(userPrincipalName=testuser1@adsample.local) fields=homeDirectory,uidNumber,gidNumber
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): no fields returned by the server
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): result:  homeDirectory missing; uidNumber missing; gidNumber missing
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: ldap(testuser1@adsample.local): Finished userdb lookup
Apr 25 18:49:06 mail dovecot[3326]: auth: Debug: master userdb out: USER#0114040032257#011testuser1@adsample.local#011uid=1000#011gid=1000#011home=/var/mail/testuser1/#011auth_mech=PLAIN

で、/var/mail がどのようになっているかを確認すると、まだ何もない

[root@mail ~]# ls -l /var/mail/
total 0
[root@mail ~]#

telnetコマンドでPOP3ログインを手動で実施してみる

[root@mail ~]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user testuser1
+OK
pass パスワード
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
[root@mail ~]# 

/var/mail/にディレクトリが作成された

[root@mail ~]# ls -l /var/mail/
total 0
drwx------. 3 vmail vmail 116 Apr 25  2025 testuser1
[root@mail ~]#

ただ、mbox形式で作成されていた

[root@mail ~]# ls -ltR /var/mail/testuser1/
/var/mail/testuser1/:
total 8
-rw-------. 1 vmail vmail 452 Apr 25  2025 dovecot.list.index.log
-rw-------. 1 vmail vmail   8 Apr 25  2025 dovecot-uidvalidity
-r--r--r--. 1 vmail vmail   0 Apr 25  2025 dovecot-uidvalidity.680b65c4
drwx------. 3 vmail vmail  19 Apr 25  2025 mailboxes

/var/mail/testuser1/mailboxes:
total 0
drwx------. 3 vmail vmail 24 Apr 25  2025 INBOX

/var/mail/testuser1/mailboxes/INBOX:
total 0
drwx------. 2 vmail vmail 31 Apr 25  2025 dbox-Mails

/var/mail/testuser1/mailboxes/INBOX/dbox-Mails:
total 4
-rw-------. 1 vmail vmail 224 Apr 25  2025 dovecot.index.log
[root@mail ~]#

maildir形式への変更

設定をみなおしてみると、RedHat手順の中で /etc/dovecot/conf.d/10-mail.conf に mail_location パラメータで 「sdbox:~」としていたところが dbox Mailbox Formatのsingle-dbox形式での保存という設定という意味だった。

設定を「mail_location = maildir:/var/mail/%n/Maildir」に変更

[root@mail dovecot]# diff -u /etc/dovecot/conf.d/10-mail.conf.org /etc/dovecot/conf.d/10-mail.conf
--- /etc/dovecot/conf.d/10-mail.conf.org        2025-04-25 03:13:54.044373479 +0900
+++ /etc/dovecot/conf.d/10-mail.conf    2025-04-30 10:59:12.661404241 +0900
@@ -27,7 +27,7 @@
 #
 # <doc/wiki/MailLocation.txt>
 #
-#mail_location =
+mail_location = maildir:/var/mail/%n/Maildir

 # If you need to set multiple mailbox locations or want to change default
 # namespace settings, you can do it by defining namespace sections.
[root@mail dovecot]# systemctl restart dovecot
[root@mail dovecot]#

とりあえずsdbox設定で作られたメールディレクトリを削除

[root@mail dovecot]# ls /var/mail/testuser2/
dovecot-uidvalidity           dovecot.list.index.log
dovecot-uidvalidity.680b6784  mailboxes
[root@mail dovecot]# rm -rf /var/mail/testuser2/
[root@mail dovecot]# ls -l /var/mail/testuser2/
ls: cannot access '/var/mail/testuser2/': No such file or directory
[root@mail dovecot]# 

認証テストとpop3ログインテストを実施

[root@mail dovecot]# doveadm auth login testuser2@adsample.local
Password: パスワード
passdb: testuser2@adsample.local auth succeeded
extra fields:
  user=testuser2@adsample.local
userdb extra fields:
  testuser2@adsample.local
  uid=1000
  gid=1000
  home=/var/mail/testuser2/
  auth_mech=PLAIN
[root@mail dovecot]# ls -l /var/mail/testuser2/
ls: cannot access '/var/mail/testuser2/': No such file or directory
[root@mail dovecot]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user testuser2@adsample.local
+OK
pass パスワード
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
[root@mail dovecot]# 

pop3ログイン後に maildir形式で作成されていることを確認

[root@mail dovecot]# ls -l /var/mail/testuser2/
total 4
drwx------. 5 vmail vmail 4096 Apr 30 11:00 Maildir
[root@mail dovecot]# ls -l /var/mail/testuser2/Maildir/
total 16
drwx------. 2 vmail vmail   6 Apr 30 11:00 cur
-rw-------. 1 vmail vmail  51 Apr 30 11:00 dovecot-uidlist
-rw-------. 1 vmail vmail   8 Apr 30 11:00 dovecot-uidvalidity
-r--r--r--. 1 vmail vmail   0 Apr 30 11:00 dovecot-uidvalidity.68118427
-rw-------. 1 vmail vmail 320 Apr 30 11:00 dovecot.index.log
-rw-------. 1 vmail vmail 452 Apr 30 11:00 dovecot.list.index.log
-rw-------. 1 vmail vmail   0 Apr 30 11:00 maildirfolder
drwx------. 2 vmail vmail   6 Apr 30 11:00 new
drwx------. 2 vmail vmail   6 Apr 30 11:00 tmp
[root@mail dovecot]#

ちなみに testuser1のほうはmailboxesディレクトリなどを残したままmaildirでログインしなおしてみたところ両方のディレクトリが残った状態となりました。

[root@mail dovecot]# ls -l /var/mail/
total 0
drwx------. 3 vmail vmail 116 Apr 25 19:36 testuser1
drwx------. 3 vmail vmail  21 Apr 30 11:00 testuser2
[root@mail dovecot]# ls -l /var/mail/testuser1
total 8
-rw-------. 1 vmail vmail   8 Apr 25 19:36 dovecot-uidvalidity
-r--r--r--. 1 vmail vmail   0 Apr 25 19:36 dovecot-uidvalidity.680b65c4
-rw-------. 1 vmail vmail 452 Apr 25 19:36 dovecot.list.index.log
drwx------. 3 vmail vmail  19 Apr 25 19:36 mailboxes
[root@mail dovecot]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user testuser1@adsample.local
+OK
pass パスワード
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
[root@mail dovecot]# ls -l /var/mail/testuser1
total 12
drwx------. 5 vmail vmail 4096 Apr 30 11:05 Maildir
-rw-------. 1 vmail vmail    8 Apr 25 19:36 dovecot-uidvalidity
-r--r--r--. 1 vmail vmail    0 Apr 25 19:36 dovecot-uidvalidity.680b65c4
-rw-------. 1 vmail vmail  452 Apr 25 19:36 dovecot.list.index.log
drwx------. 3 vmail vmail   19 Apr 25 19:36 mailboxes
[root@mail dovecot]#

Windows Server 2025で作ったActive Directory環境でldapsを使えるようにする

Windows Server 2025でActive Directory環境を作ってみた。

フォレスト/機能レベルはWindows Server 2016とした

この環境に対してAlmaLinux 9で作ったサーバから ldapsearchコマンドを実行したところ「ldap_bind: Strong(er) authentication required (8)」というエラーになった

# ldapsearch -x -D "cn=administrator,cn=users,dc=adsample,dc=local" -w "パスワード" -H ldap://192.168.122.10 -b "CN=testuser1,CN=Users,DC=adsample,dc=local" -s base
ldap_bind: Strong(er) authentication required (8)
        additional info: 00002028: LdapErr: DSID-0C0903CB, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v65f4
#

セキュリティ強化のためLDAP署名もしくはLDAPSに対応していないとダメになったようだ

[AD管理者向け] 2020 年 LDAP 署名と LDAP チャネルバインディングが有効化。確認を!

じゃあ、とldapsでアクセスしてみるがエラー

# ldapsearch -x -D "cn=administrator,cn=users,dc=adsample,dc=local" -w "パスワード -H ldaps://192.168.122.10 -b "CN=testuser1,CN=Users,DC=adsample,dc=local" -s base
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
#

デバッグモードで接続のテストだけ行ってみる

# ldapsearch -x -d -1 -H ldaps://192.168.122.10
ldap_url_parse_ext(ldaps://192.168.122.10)
ldap_create
ldap_url_parse_ext(ldaps://192.168.122.10:636/??base)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP 192.168.122.10:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 192.168.122.10:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
TLS trace: SSL_connect:before SSL initialization
tls_write: want=302 error=Connection reset by peer
TLS trace: SSL_connect:error in SSLv3/TLS write client hello
TLS: can't connect: .
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
#

証明書が設定されてないようだ

確認のためopenssl s_clientでも接続を試みる

# openssl s_client -connect  192.168.122.10:636
Connecting to 192.168.122.10
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 302 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
#

接続できない

DELLのサイトに「Active Directory統合用にLDAPSを構成する方法」という記事があって、それがそのまま使えた

まず、Active Directoryサーバにログインして、「ldp.exe」を実行し、接続先としてドメイン名、ポート389、SSLチェックは無しを指定して接続を試みる

これはldapでの接続テストとなる。

下記のように情報が取れれば問題ない

次にldapsでの接続をテストするため、SSLにチェックを入れ、ポート636で接続する

接続ができない、というエラーとなった。

このため、証明書の作成が必要、ということになる。

作成にはPowerShellから「New-SelfSignedCertificate -DnsName adtest.adsample.local,adtest -CertStoreLocation cert:\LocalMachine\My」を実行する

-DnsNameの後ろは、Active DIrectoryサーバのFQDNとショートホスト名の2種類をカンマ区切りで指定する

これを実行すると「certlm.msc」の[個人]-[証明書]に証明書が発行される

注意点としては、証明書の有効期限が1年間となっているので、1年以内に更新する必要がある、という点。

期間を変更する場合、New-SelfSignedCertificateの-NotAfterオプションに終了日を指定する。

試してないがおそらく 「-NotAfter (Get-Date).AddMonths(36)」で3年間が作れるのでは?

この証明書を右クリックメニューのコピーをして

[信頼されたルート証明機関]-[証明書]にペースト

再度 ldp.exeから、ポート636, SSLチェックありで接続を試みて接続に成功することを確認

再びLinux側に戻って、まずはopenssl s_clientでの確認

# openssl s_client -connect  192.168.122.10:636
Connecting to 192.168.122.10
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 CN=adtest.adsample.local
verify error:num=18:self-signed certificate
verify return:1
depth=0 CN=adtest.adsample.local
verify return:1
---
<略>
    Start Time: 1744940383
    Timeout   : 7200 (sec)
    Verify return code: 18 (self-signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
^C
#

証明書が設定されたことを確認できた。

改めてldapsearchを実行して、情報が取得できることを確認した

# ldapsearch -x -D "cn=administrator,cn=users,dc=adsample,dc=local" -w "パスワード" -H ldaps://192.168.122.10 -b "CN=testuser1,CN=Users,DC=adsample,dc=local" -s base
# extended LDIF
#
# LDAPv3
# base <CN=testuser1,CN=Users,DC=adsample,dc=local> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object
matchedDN: CN=Users,DC=adsample,DC=local
text: 0000208D: NameErr: DSID-0310028F, problem 2001 (NO_OBJECT), data 0, best
 match of:
        'CN=Users,DC=adsample,DC=local'


# numResponses: 1
#

dmarc-report-converter を導入してみた

iredmailのメールサーバに、dmarc-report-converter を導入してWebでDMARCレポートを確認できるようにした。

導入

基本的には書いてある通りに実行

githubのreleaseから dmarc-report-converter_v0.8.1-20240617_x86_64.tar.gz をダウンロード

/opt以下に展開(/opt/dmarc-report-converter)

/opt/dmarc-report-converter/config.yaml を編集し設定

config.yaml への設定ポイント

今回はiredmailメールサーバに直接配置するので、 入力フォルダは /var/vmail/vmail1/ドメイン名 の下にあるユーザフォルダ内のDMARCレポートが入るところを指定します

input:
delete: no
dir: “/var/vmail/vmail1/ドメイン名/d/m/a/dmarc-reports/Maildir/cur/

出力先は /var/www/dmarc としますので、まずはディレクトリを作成し、必要なファイルをコピします

# mkdir /var/www/dmarc
# cp -r /opt/dmarc-report-converter/assets /var/www/dmarc
#
output:
 file: "/var/www/dmarc/{{ .ReportMetadata.Email }}/{{ .PolicyPublished.Domain }}!{{.ReportMetadata.DateRange.Begin}}!{{ .ReportMetadata.ReportID }}.html"
 format: "html_static"
 assets_path: "/dmarc/assets"

nginxへの設定は /etc/nginx/templates/dmarc.tmpl を作成し、部外者に見られないようにパスワードをかけておきます

location /dmarc/ {
    root /var/www/;
    autoindex           on;
    autoindex_localtime on;

    auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/htpasswd-dmarc;
}

(最初「root /var/www/dmarc/;」で設定したら /var/www/dmarc/dmarc/ にアクセスしていたので修正)

で、/etc/nginx/site-enabled/ の適切な設定ファイルに「include /etc/nginx/templates/dmarc.tmpl;」を追加して「systemctl restart nginx」します

で・・・/opt/dmarc-report-converter/dmarc-report-converter で実行したわけなんですが・・・

[ERROR] files: mimetype text/plain; charset=utf-8 not supported in file /var/vmail/vmail1/ドメン名/d/m/a/dmarc-reports-2024.01.25.18.17.13/Maildir/cur/1735209134.M693289P2635886.メールサーバ名,S=4907,W=4989:2,a, skip

という形でMIMEのままだとダメとのこと

仕方が無いのでIMAPで取得してから処理することにした

input:
  delete: no
  dir: "/var/www/dmarc/dmarc_files/"
  imap:
    server: "メールサーバ:993"
    username: "dmarc-reports@ドメン名"
    password: "パスワード"
    mailbox: "INBOX"

これで https~/dmarc/ にアクセスすると週ごとの各ドメインディレクトリが出来て修正を確認できるようになった。

初期設定だとIPアドレスのみ表示なので、DNS逆引きも行わせたところレポート取得にだいぶ時間がかかるようになったのが注意点


めんどくさい点

毎日レポートと、1週間のまとめレポートを出す、という感じの使い方がやりにくい

iredmail運用メモ 2024/12/19版

iRedMail という postfix+dovecot で構成された複数ドメインのメールサーバを運用できるツールがある。

いにしえのqmailを使用するvpopmail みたいな感じで使えるのだが、各ドメインごとに管理者を置きたいとかになるとiRedMail 有償版(iRedAdmin-Pro)が必要になる。

2018年にvpopmailからiredmail/CentOS7環境に移行してつかっていたのだが、この度ようやく新しいサーバiredmail/AlmaLinux 9環境への移行が完了した。

というわけで、 iRedMailサーバをCentOS7からAlmaLinux 9ベースに置き換えた時に設定した内容のメモ書きです。

iRedMailのインストールについては公式 Install iRedMail on Red Hat Enterprise Linux, CentOS を参照のこと。SSL対応の追加作業は Request a free cert from Let’s Encrypt (for servers deployed with downloadable iRedMail installer)

トピック

(0) mysql DBを移行することについて
(1)いま新規作成すると全メールDKIM署名ありになるけど罠あり
(2)メール同期にrsyncの追加インストールを忘れずに
(3) greylisting情報の移植
(4)旧仕様クライアント対策
(5) 他サーバで送信された自ドメインが受信拒否される
(6) Barracudacentralがメールを拒否しすぎる問題
(7) mail.goo.ne.jp メールの拒否解除
(8) IPアドレスが入ったホスト名拒否設定の一部解除
(9) heloでDNSに登録されていないホスト名しゃべるメールサーバの取り扱い
(10) SOGoのタイムゾーン変更
(11) 切り替え後の運用状況確認
(12) spamasssasin の設定移植
(13) logwatchの設定調整
(14) logwatchのdovecotスクリプトカスタマイズ
(15) logrotateの設定調整
(16) Let’s Encrypt によるSSL対応を dehydrated を使って行う
(17) logwatchに spamhaus 登録検知?

(0) mysql DBを移行することについて

メール本文は /var/vmail/vmail1 以下の各ドメインディレクトリをまるごとrsyncでコピーすればOK

mysql dbについては「/var/vmail/backup/backup_mysql.sh」を実行すると、/var/vmail/backup/mysql/ 以下に/var/vmail/backup/mysql/20xx/月/日」というディレクトリが作成され、以下のようなデータが保存されている。

# ls /var/vmail/backup/mysql/2024/12/15
2024-12-15-03-30-01.log
amavisd-2024-12-15-03-30-01.sql.bz2
iredadmin-2024-12-15-03-30-01.sql.bz2
iredapd-2024-12-15-03-30-01.sql.bz2
mysql-2024-12-15-03-30-01.sql.bz2
roundcubemail-2024-12-15-03-30-01.sql.bz2
sogo-2024-12-15-03-30-01.sql.bz2
vmail-2024-12-15-03-30-01.sql.bz2
#

このうち、mysqlについては、これを移植してしまうとmysql dbにアクセスするためのユーザ情報が変わってしまうため、不可

移行するmyql dbは以下

vmail : postfix/dovecotが利用するユーザ情報が保管されている
iredadmin: iredamilの管理情報が保管されている
iredapd: greylist情報などの管理情報が保管されている
amavisd: 届いたメールの検査などを行うamavisdが使用

手法は「Backup and restore」を参考に
1) 「systemctl stop postfix」「systemctl stop dovecot」を実行してメールサービス停止
2) rsyncで/var/vmail/vmail1 を新サーバにコピー
3) /var/vmail/backup/backup_mysql.sh を実行して最新のバックアップ取得
4) /var/vmail/backup/mysql/20xx/月/日 を新サーバにコピー
5) 新サーバにコピーしたmysql dbのbzip2 圧縮を展開
6) 「mysql -u root データベース名」で起動して「source データベース名-日付-sql」でSQLリストア

(1) いま新規作成すると全メールDKIM署名ありになるけど罠あり

Sign DKIM signature on outgoing emails for new mail domain の「Use one DKIM key for all mail domains」に書かれている全ドメインのメールに対して、メインドメインのメールとしての署名を付けるような設定がされている。

しかし、DKIM署名は、同じドメインでないと有効とはならないので、ちゃんと設定しないとgmailでFAILとなる。

例えば、メインドメインが osakana.net だとした場合、出て行くメールにはすべて osakana.net としての署名がつく設定になっている。
( dkim._domainkey.osakana.net のTXT で v=DKIM1; p=</var/lib/dkim/osakana.pemを元にした内容> を登録。値はamavisd -c /etc/amavisd/amavisd.conf showkeys で確認する)

adosakana.local のドメインが載っていても、特に設定しない限りは osakana.net の署名を付けて出て行く設定になっているのだが、gmailでFAILとなる。

これは、 dkim._domainkey.adosakana.local の TXT に v=DKIM1; p=</var/lib/dkim/osakana.pemを元にした内容> で 登録してあったとしてもダメ。なぜかと言えば、各メールのヘッダに付与されるdkimドメイン情報は d=osakana.net となっていて、メールアドレスのドメイン adosakana.local と ヘッダのdkimドメインosakana.net は異なるため検証が失敗することになる。

これを防ぐには amavisd.conf の dkim_key と@dkim_signature_options_bysender_maps の間に以下を追加する必要がある。

dkim_key('osakana.net', "dkim", "/var/lib/dkim/osakana.net.pem");
dkim_key('adosakana.local', "dkim", "/var/lib/dkim/osakana.net.pem");

pemファイル自体はメインドメインと同じでもかまわない。

この場合は、 dkim._domainkey.adosakana.local の TXT に登録するデータ自体は dkim._domainkey.osakana.net と全く同一で問題無かった。

で、@dkim_signature_options_bysender_maps = ({ のあとに下記のようにdkim keyを実際に追加させるための処理を入れる

"osakana.net" => { d => "osakana.net", a => 'rsa-sha256', ttl => 10*24*3600 },
"adosakana.local" => { d => "adosakana.local", a => 'rsa-sha256', ttl => 10*24*3600 },

(2)メール同期に使うrsyncのインストールを忘れずに

最小インストールではrsyncがインストールされないので、rsyncを使って新旧サーバ間で /var/vmail/vmail1の同期を行う場合は、両サーバに rsyncを追加インストールするのを忘れない。

また、ホスト名/IPアドレス確認でnslookupコマンド, dig コマンドを使うことがあるので bind-utils も追加しておいた

(3) greylisting情報の移植

iredapdによるgreylisting設定の移植が必要

mysql dbのiredapd に含まれているので、それを移植すれば大丈夫

内容の確認については以下で行える

グレイリスト処理を行わないドメインやIPアドレスを確認するため「/opt/iredapd/tools/greylisting_admin.py –list」を実行

# /opt/iredapd/tools/greylisting_admin.py --list
Status   Sender                             -> Local Account
------------------------------------------------------------------------------
disabled 1xx.xx.xxx.230                     -> @. (anyone)
disabled 1xx.xxx.xxx.84                     -> @. (anyone)
disabled @.salesforce.com                   -> @. (anyone)
enabled  @. (anyone)                        -> @. (anyone)
#

上記だとsalesforce.com のメールと、特定のIPアドレスからのメールがグレイリスト処理対象外(disabled)となっている。

続いてホワイトリストとして登録しているドメインや具体的なメールアドレスがあるかを以下を実行して確認する

/opt/iredapd/tools/greylisting_admin.py --list-whitelist-domains
/opt/iredapd/tools/greylisting_admin.py --list-whitelists

ちなみに、現行のデフォルトは以下となっていた。

# /opt/iredapd/tools/greylisting_admin.py --list-whitelist-domains
amazon.com
aol.com
cloudfiltering.com
cloudflare.com
constantcontact.com
craigslist.org
cust-spf.exacttarget.com
ebay.com
exacttarget.com
facebook.com
facebookmail.com
fbmta.com
fishbowl.com
github.com
gmx.com
google.com
hotmail.com
icloud.com
icontact.com
inbox.com
instagram.com
iredmail.org
linkedin.com
mail.com
mailchimp.com
mailgun.com
mailjet.com
messagelabs.com
microsoft.com
outlook.com
paypal.com
pinterest.com
reddit.com
salesforce.com
sbcglobal.net
sendgrid.com
sendgrid.net
serverfault.com
stackoverflow.com
tumblr.com
twitter.com
yahoo.com
yandex.ru
zendesk.com
zoho.com
# /opt/iredapd/tools/greylisting_admin.py --list-whitelists
10.162.0.0/16 -> @., 'AUTO-UPDATE: icloud.com'
103.151.192.0/23 -> @., 'AUTO-UPDATE: cloudflare.com'
103.28.42.0/24 -> @., 'AUTO-UPDATE: ebay.com'
103.9.96.0/22 -> @., 'AUTO-UPDATE: messagelabs.com'
104.130.122.0/23 -> @., 'AUTO-UPDATE: mailgun.com'
104.130.96.0/28 -> @., 'AUTO-UPDATE: mailgun.com'
104.43.243.237 -> @., 'AUTO-UPDATE: zendesk.com'
104.44.112.128/25 -> @., 'AUTO-UPDATE: microsoft.com'
104.47.0.0/17 -> @., 'AUTO-UPDATE: github.com'
104.47.108.0/23 -> @., 'AUTO-UPDATE: hotmail.com'
104.47.20.0/23 -> @., 'AUTO-UPDATE: hotmail.com'
104.47.75.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
106.50.16.0/28 -> @., 'AUTO-UPDATE: amazon.com'
107.20.18.111/32 -> @., 'AUTO-UPDATE: fishbowl.com'
107.20.210.250 -> @., 'AUTO-UPDATE: mailchimp.com'
108.174.0.0/24 -> @., 'AUTO-UPDATE: linkedin.com'
108.174.0.215 -> @., 'AUTO-UPDATE: linkedin.com'
108.174.3.0/24 -> @., 'AUTO-UPDATE: linkedin.com'
108.174.3.215 -> @., 'AUTO-UPDATE: linkedin.com'
108.174.6.0/24 -> @., 'AUTO-UPDATE: linkedin.com'
108.174.6.215 -> @., 'AUTO-UPDATE: linkedin.com'
108.175.18.45 -> @., 'AUTO-UPDATE: paypal.com'
108.175.30.45 -> @., 'AUTO-UPDATE: paypal.com'
108.177.8.0/21 -> @., 'AUTO-UPDATE: cloudflare.com'
108.177.96.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
108.179.144.0/20 -> @., 'AUTO-UPDATE: fishbowl.com'
111.221.112.0/21 -> @., 'AUTO-UPDATE: hotmail.com'
111.221.23.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
111.221.26.0/27 -> @., 'AUTO-UPDATE: hotmail.com'
111.221.66.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
111.221.69.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
112.19.199.64/29 -> @., 'AUTO-UPDATE: icloud.com'
112.19.242.64/29 -> @., 'AUTO-UPDATE: icloud.com'
117.120.16.0/21 -> @., 'AUTO-UPDATE: messagelabs.com'
12.130.86.238 -> @., 'AUTO-UPDATE: paypal.com'
121.244.91.48/32 -> @., 'AUTO-UPDATE: zoho.com'
122.15.156.182/32 -> @., 'AUTO-UPDATE: zoho.com'
128.17.0.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.17.128.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.17.192.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.17.64.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.0.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.176.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.240.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.241.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.242.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.242.16 -> @., 'AUTO-UPDATE: exacttarget.com'
128.245.242.17 -> @., 'AUTO-UPDATE: exacttarget.com'
128.245.242.18 -> @., 'AUTO-UPDATE: exacttarget.com'
128.245.243.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.244.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.245.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.246.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.247.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.248.0/21 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
128.245.64.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
129.145.74.12 -> @., 'AUTO-UPDATE: mailchimp.com'
129.146.147.105 -> @., 'AUTO-UPDATE: mailchimp.com'
129.146.236.58 -> @., 'AUTO-UPDATE: mailchimp.com'
129.146.88.28 -> @., 'AUTO-UPDATE: mailchimp.com'
129.151.67.221 -> @., 'AUTO-UPDATE: mailchimp.com'
129.153.104.71 -> @., 'AUTO-UPDATE: mailchimp.com'
129.153.168.146 -> @., 'AUTO-UPDATE: mailchimp.com'
129.153.190.200 -> @., 'AUTO-UPDATE: mailchimp.com'
129.153.194.228 -> @., 'AUTO-UPDATE: mailchimp.com'
129.153.62.216 -> @., 'AUTO-UPDATE: mailchimp.com'
129.154.255.129 -> @., 'AUTO-UPDATE: mailchimp.com'
129.158.56.255 -> @., 'AUTO-UPDATE: constantcontact.com'
129.159.22.159 -> @., 'AUTO-UPDATE: mailchimp.com'
129.159.87.137 -> @., 'AUTO-UPDATE: mailchimp.com'
129.213.195.191 -> @., 'AUTO-UPDATE: mailchimp.com'
129.41.169.249 -> @., 'AUTO-UPDATE: exacttarget.com'
129.41.77.70 -> @., 'AUTO-UPDATE: paypal.com'
129.80.145.156 -> @., 'AUTO-UPDATE: constantcontact.com'
129.80.5.164 -> @., 'AUTO-UPDATE: mailchimp.com'
129.80.64.36 -> @., 'AUTO-UPDATE: constantcontact.com'
129.80.67.121 -> @., 'AUTO-UPDATE: mailchimp.com'
13.110.208.0/21 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
13.110.209.0/24 -> @., 'AUTO-UPDATE: exacttarget.com'
13.110.216.0/22 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
13.110.224.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
13.111.0.0/16 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
13.111.191.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
130.162.39.83 -> @., 'AUTO-UPDATE: mailchimp.com'
130.211.0.0/22 -> @., 'AUTO-UPDATE: cloudflare.com'
130.61.9.72 -> @., 'AUTO-UPDATE: mailchimp.com'
131.253.121.0/26 -> @., 'AUTO-UPDATE: microsoft.com'
131.253.30.0/24 -> @., 'AUTO-UPDATE: microsoft.com'
132.145.13.209 -> @., 'AUTO-UPDATE: mailchimp.com'
132.226.26.225 -> @., 'AUTO-UPDATE: mailchimp.com'
132.226.49.32 -> @., 'AUTO-UPDATE: mailchimp.com'
132.226.56.24 -> @., 'AUTO-UPDATE: mailchimp.com'
134.170.113.0/26 -> @., 'AUTO-UPDATE: microsoft.com'
134.170.141.64/26 -> @., 'AUTO-UPDATE: microsoft.com'
134.170.143.0/24 -> @., 'AUTO-UPDATE: microsoft.com'
134.170.174.0/24 -> @., 'AUTO-UPDATE: microsoft.com'
134.170.27.8 -> @., 'AUTO-UPDATE: microsoft.com'
135.84.80.0/24 -> @., 'AUTO-UPDATE: zoho.com'
135.84.81.0/24 -> @., 'AUTO-UPDATE: zoho.com'
135.84.82.0/24 -> @., 'AUTO-UPDATE: zoho.com'
135.84.83.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.160.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.161.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.162.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.178.49/32 -> @., 'AUTO-UPDATE: zoho.com'
136.143.182.0/23 -> @., 'AUTO-UPDATE: zoho.com'
136.143.184.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.188.0/24 -> @., 'AUTO-UPDATE: zoho.com'
136.143.190.0/23 -> @., 'AUTO-UPDATE: zoho.com'
136.147.128.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
136.147.135.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
136.147.176.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
136.147.176.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
136.147.182.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
136.147.224.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
136.179.50.206 -> @., 'AUTO-UPDATE: zendesk.com'
139.138.35.44 -> @., 'AUTO-UPDATE: mailchimp.com'
139.138.46.121 -> @., 'AUTO-UPDATE: mailchimp.com'
139.138.46.176 -> @., 'AUTO-UPDATE: mailchimp.com'
139.138.46.219 -> @., 'AUTO-UPDATE: mailchimp.com'
139.138.57.55 -> @., 'AUTO-UPDATE: mailchimp.com'
139.138.58.119 -> @., 'AUTO-UPDATE: mailchimp.com'
139.180.17.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
139.60.152.0/22 -> @., 'AUTO-UPDATE: mailchimp.com'
140.238.148.191 -> @., 'AUTO-UPDATE: constantcontact.com'
141.148.159.229 -> @., 'AUTO-UPDATE: mailchimp.com'
141.193.184.128/25 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.184.32/27 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.184.64/26 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.185.128/25 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.185.32/27 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.185.64/26 -> @., 'AUTO-UPDATE: fishbowl.com'
141.193.32.0/23 -> @., 'AUTO-UPDATE: mailgun.com'
143.244.80.0/20 -> @., 'AUTO-UPDATE: fishbowl.com'
143.47.120.152 -> @., 'AUTO-UPDATE: constantcontact.com'
143.55.224.0/21 -> @., 'AUTO-UPDATE: mailgun.com'
143.55.232.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
143.55.236.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
144.160.159.21 -> @., 'AUTO-UPDATE: sbcglobal.net'
144.160.159.22 -> @., 'AUTO-UPDATE: sbcglobal.net'
144.160.235.143 -> @., 'AUTO-UPDATE: sbcglobal.net'
144.160.235.144 -> @., 'AUTO-UPDATE: sbcglobal.net'
144.178.36.0/24 -> @., 'AUTO-UPDATE: icloud.com'
144.178.38.0/24 -> @., 'AUTO-UPDATE: icloud.com'
144.24.6.140 -> @., 'AUTO-UPDATE: mailchimp.com'
144.34.32.247 -> @., 'AUTO-UPDATE: twitter.com'
144.34.33.247 -> @., 'AUTO-UPDATE: twitter.com'
144.34.8.247 -> @., 'AUTO-UPDATE: twitter.com'
144.34.9.247 -> @., 'AUTO-UPDATE: twitter.com'
144.76.86.15 -> @., 'AUTO-UPDATE: cloudfiltering.com'
146.20.112.0/26 -> @., 'AUTO-UPDATE: mailgun.com'
146.20.113.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
146.20.14.104 -> @., 'AUTO-UPDATE: constantcontact.com'
146.20.14.105 -> @., 'AUTO-UPDATE: constantcontact.com'
146.20.14.106 -> @., 'AUTO-UPDATE: constantcontact.com'
146.20.14.107 -> @., 'AUTO-UPDATE: constantcontact.com'
146.20.191.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
146.20.215.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
146.20.215.182 -> @., 'AUTO-UPDATE: fbmta.com'
146.88.28.0/24 -> @., 'AUTO-UPDATE: ebay.com'
147.243.1.153 -> @., 'AUTO-UPDATE: microsoft.com'
147.243.1.47 -> @., 'AUTO-UPDATE: microsoft.com'
147.243.1.48 -> @., 'AUTO-UPDATE: microsoft.com'
147.243.128.24 -> @., 'AUTO-UPDATE: microsoft.com'
147.243.128.26 -> @., 'AUTO-UPDATE: microsoft.com'
148.105.0.0/16 -> @., 'AUTO-UPDATE: mailchimp.com'
148.105.8.0/21 -> @., 'AUTO-UPDATE: ebay.com'
149.72.0.0/16 -> @., 'AUTO-UPDATE: ebay.com'
149.72.223.204 -> @., 'AUTO-UPDATE: constantcontact.com'
149.72.248.236 -> @., 'AUTO-UPDATE: reddit.com'
149.97.173.180 -> @., 'AUTO-UPDATE: zendesk.com'
15.200.201.185 -> @., 'AUTO-UPDATE: mailchimp.com'
15.200.21.50 -> @., 'AUTO-UPDATE: mailchimp.com'
15.200.44.248 -> @., 'AUTO-UPDATE: mailchimp.com'
150.230.98.160 -> @., 'AUTO-UPDATE: mailchimp.com'
151.145.38.14 -> @., 'AUTO-UPDATE: constantcontact.com'
152.67.105.195 -> @., 'AUTO-UPDATE: mailchimp.com'
152.69.200.236 -> @., 'AUTO-UPDATE: mailchimp.com'
152.70.155.126 -> @., 'AUTO-UPDATE: mailchimp.com'
155.248.208.51 -> @., 'AUTO-UPDATE: mailchimp.com'
155.248.220.138 -> @., 'AUTO-UPDATE: constantcontact.com'
155.248.234.149 -> @., 'AUTO-UPDATE: constantcontact.com'
155.248.237.141 -> @., 'AUTO-UPDATE: constantcontact.com'
157.151.208.65 -> @., 'AUTO-UPDATE: paypal.com'
157.255.1.64/29 -> @., 'AUTO-UPDATE: icloud.com'
157.55.0.192/26 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.1.128/26 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.11.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.157.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.2.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.225.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.49.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.61.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
157.55.9.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.56.120.128/26 -> @., 'AUTO-UPDATE: microsoft.com'
157.56.232.0/21 -> @., 'AUTO-UPDATE: hotmail.com'
157.56.24.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
157.56.240.0/20 -> @., 'AUTO-UPDATE: hotmail.com'
157.56.248.0/21 -> @., 'AUTO-UPDATE: hotmail.com'
157.58.196.96/29 -> @., 'AUTO-UPDATE: microsoft.com'
157.58.249.3 -> @., 'AUTO-UPDATE: microsoft.com'
157.58.30.128/25 -> @., 'AUTO-UPDATE: microsoft.com'
158.101.211.207 -> @., 'AUTO-UPDATE: mailchimp.com'
158.247.16.0/20 -> @., 'AUTO-UPDATE: fishbowl.com'
159.112.240.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
159.112.242.162 -> @., 'AUTO-UPDATE: cloudflare.com'
159.135.132.128/25 -> @., 'AUTO-UPDATE: mailgun.com'
159.135.140.80/29 -> @., 'AUTO-UPDATE: mailgun.com'
159.135.224.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
159.135.228.10 -> @., 'AUTO-UPDATE: cloudflare.com'
159.183.0.0/16 -> @., 'AUTO-UPDATE: ebay.com'
159.92.154.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.155.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.157.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.157.16 -> @., 'AUTO-UPDATE: exacttarget.com'
159.92.157.17 -> @., 'AUTO-UPDATE: exacttarget.com'
159.92.157.18 -> @., 'AUTO-UPDATE: exacttarget.com'
159.92.158.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.159.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.160.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.161.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.162.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.163.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.164.0/22 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
159.92.168.0/21 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
160.1.62.192 -> @., 'AUTO-UPDATE: mailchimp.com'
161.38.192.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
161.38.204.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
161.71.32.0/19 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
161.71.64.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
162.247.216.0/22 -> @., 'AUTO-UPDATE: mailchimp.com'
163.114.130.16 -> @., 'AUTO-UPDATE: instagram.com'
163.114.132.120 -> @., 'AUTO-UPDATE: instagram.com'
163.114.134.16 -> @., 'AUTO-UPDATE: instagram.com'
163.114.135.16 -> @., 'AUTO-UPDATE: instagram.com'
163.47.180.0/22 -> @., 'AUTO-UPDATE: ebay.com'
164.152.23.32 -> @., 'AUTO-UPDATE: mailchimp.com'
164.177.132.168/30 -> @., 'AUTO-UPDATE: constantcontact.com'
165.173.128.0/24 -> @., 'AUTO-UPDATE: zoho.com'
166.78.68.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
166.78.68.221 -> @., 'AUTO-UPDATE: cloudflare.com'
166.78.69.169 -> @., 'AUTO-UPDATE: github.com'
166.78.69.170 -> @., 'AUTO-UPDATE: github.com'
166.78.71.131 -> @., 'AUTO-UPDATE: github.com'
167.220.67.232/29 -> @., 'AUTO-UPDATE: microsoft.com'
167.89.0.0/17 -> @., 'AUTO-UPDATE: ebay.com'
167.89.101.192/28 -> @., 'AUTO-UPDATE: github.com'
167.89.101.2 -> @., 'AUTO-UPDATE: github.com'
167.89.46.159 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.54.103 -> @., 'AUTO-UPDATE: reddit.com'
167.89.60.95 -> @., 'AUTO-UPDATE: sendgrid.com'
167.89.64.9 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.65.0 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.65.100 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.65.53 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.74.233 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.75.126 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.75.136 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.75.164 -> @., 'AUTO-UPDATE: cloudflare.com'
167.89.75.33 -> @., 'AUTO-UPDATE: cloudflare.com'
168.138.5.36 -> @., 'AUTO-UPDATE: mailchimp.com'
168.138.73.51 -> @., 'AUTO-UPDATE: mailchimp.com'
168.138.77.31 -> @., 'AUTO-UPDATE: constantcontact.com'
168.245.0.0/17 -> @., 'AUTO-UPDATE: ebay.com'
168.245.12.252 -> @., 'AUTO-UPDATE: reddit.com'
168.245.127.231 -> @., 'AUTO-UPDATE: reddit.com'
168.245.46.9 -> @., 'AUTO-UPDATE: reddit.com'
169.148.129.0/24 -> @., 'AUTO-UPDATE: zoho.com'
169.148.131.0/24 -> @., 'AUTO-UPDATE: zoho.com'
169.148.142.10/32 -> @., 'AUTO-UPDATE: zoho.com'
169.148.144.0/25 -> @., 'AUTO-UPDATE: zoho.com'
169.148.144.10/32 -> @., 'AUTO-UPDATE: zoho.com'
17.142.0.0/15 -> @., 'AUTO-UPDATE: icloud.com'
17.41.0.0/16 -> @., 'AUTO-UPDATE: icloud.com'
17.57.155.0/24 -> @., 'AUTO-UPDATE: icloud.com'
17.57.156.0/24 -> @., 'AUTO-UPDATE: icloud.com'
17.58.0.0/16 -> @., 'AUTO-UPDATE: icloud.com'
170.10.128.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
170.10.129.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
170.10.132.56/29 -> @., 'AUTO-UPDATE: zendesk.com'
170.10.132.64/29 -> @., 'AUTO-UPDATE: zendesk.com'
170.10.133.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
172.104.245.227 -> @., 'AUTO-UPDATE: iredmail.org'
172.105.68.48 -> @., 'AUTO-UPDATE: iredmail.org'
172.217.0.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
172.217.128.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
172.217.160.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
172.217.192.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
172.217.32.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
172.253.112.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
172.253.56.0/21 -> @., 'AUTO-UPDATE: cloudflare.com'
173.0.84.0/29 -> @., 'AUTO-UPDATE: paypal.com'
173.0.84.224/27 -> @., 'AUTO-UPDATE: paypal.com'
173.0.94.244/30 -> @., 'AUTO-UPDATE: paypal.com'
173.194.0.0/16 -> @., 'AUTO-UPDATE: cloudflare.com'
173.203.79.182 -> @., 'AUTO-UPDATE: exacttarget.com'
173.203.81.39 -> @., 'AUTO-UPDATE: exacttarget.com'
173.224.161.128/25 -> @., 'AUTO-UPDATE: paypal.com'
173.224.165.0/26 -> @., 'AUTO-UPDATE: paypal.com'
173.245.48.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
174.36.114.128/30 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.114.140/30 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.114.148/30 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.114.152/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.84.144/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.84.16/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.84.240/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.84.32/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.84.8/29 -> @., 'AUTO-UPDATE: exacttarget.com'
174.36.85.248/30 -> @., 'AUTO-UPDATE: exacttarget.com'
174.37.67.28/30 -> @., 'AUTO-UPDATE: exacttarget.com'
175.41.215.51 -> @., 'AUTO-UPDATE: zendesk.com'
176.32.105.0/24 -> @., 'AUTO-UPDATE: amazon.com'
176.32.127.0/24 -> @., 'AUTO-UPDATE: amazon.com'
178.154.239.136/29 -> @., 'AUTO-UPDATE: yandex.ru'
178.154.239.144/28 -> @., 'AUTO-UPDATE: yandex.ru'
178.154.239.200/29 -> @., 'AUTO-UPDATE: yandex.ru'
178.154.239.208/28 -> @., 'AUTO-UPDATE: yandex.ru'
178.154.239.72/29 -> @., 'AUTO-UPDATE: yandex.ru'
178.154.239.80/28 -> @., 'AUTO-UPDATE: yandex.ru'
178.236.10.128/26 -> @., 'AUTO-UPDATE: amazon.com'
18.156.89.250 -> @., 'AUTO-UPDATE: zendesk.com'
18.157.243.190 -> @., 'AUTO-UPDATE: zendesk.com'
18.194.95.56 -> @., 'AUTO-UPDATE: zendesk.com'
18.198.96.88 -> @., 'AUTO-UPDATE: zendesk.com'
18.208.124.128/25 -> @., 'AUTO-UPDATE: fishbowl.com'
18.216.232.154 -> @., 'AUTO-UPDATE: zendesk.com'
18.235.27.253/32 -> @., 'AUTO-UPDATE: fishbowl.com'
18.236.40.242 -> @., 'AUTO-UPDATE: zendesk.com'
18.236.56.161 -> @., 'AUTO-UPDATE: constantcontact.com'
182.50.76.0/22 -> @., 'AUTO-UPDATE: exacttarget.com'
182.50.78.64/28 -> @., 'AUTO-UPDATE: paypal.com'
185.12.80.0/22 -> @., 'AUTO-UPDATE: cloudflare.com'
185.138.56.128/25 -> @., 'AUTO-UPDATE: inbox.com'
185.189.236.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
185.211.120.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
185.250.236.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
185.250.239.148 -> @., 'AUTO-UPDATE: pinterest.com'
185.250.239.168 -> @., 'AUTO-UPDATE: pinterest.com'
185.250.239.190 -> @., 'AUTO-UPDATE: pinterest.com'
185.4.120.0/22 -> @., 'AUTO-UPDATE: ebay.com'
185.58.84.93 -> @., 'AUTO-UPDATE: zendesk.com'
185.90.20.0/22 -> @., 'AUTO-UPDATE: ebay.com'
188.172.128.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
192.0.64.0/18 -> @., 'AUTO-UPDATE: tumblr.com'
192.111.0.125 -> @., 'AUTO-UPDATE: stackoverflow.com'
192.111.0.71 -> @., 'AUTO-UPDATE: stackoverflow.com'
192.124.132.125 -> @., 'AUTO-UPDATE: stackoverflow.com'
192.124.132.71 -> @., 'AUTO-UPDATE: stackoverflow.com'
192.161.144.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
192.18.139.154 -> @., 'AUTO-UPDATE: mailchimp.com'
192.18.145.36 -> @., 'AUTO-UPDATE: constantcontact.com'
192.18.152.58 -> @., 'AUTO-UPDATE: constantcontact.com'
192.237.158.0/23 -> @., 'AUTO-UPDATE: mailgun.com'
192.237.159.42 -> @., 'AUTO-UPDATE: cloudflare.com'
192.237.159.43 -> @., 'AUTO-UPDATE: cloudflare.com'
192.254.112.0/20 -> @., 'AUTO-UPDATE: ebay.com'
192.254.112.60 -> @., 'AUTO-UPDATE: github.com'
192.254.112.98/31 -> @., 'AUTO-UPDATE: github.com'
192.254.113.10 -> @., 'AUTO-UPDATE: github.com'
192.254.113.101 -> @., 'AUTO-UPDATE: github.com'
192.254.114.176 -> @., 'AUTO-UPDATE: github.com'
192.30.252.0/22 -> @., 'AUTO-UPDATE: github.com'
192.33.11.125 -> @., 'AUTO-UPDATE: stackoverflow.com'
192.33.11.71 -> @., 'AUTO-UPDATE: stackoverflow.com'
193.109.254.0/23 -> @., 'AUTO-UPDATE: messagelabs.com'
193.122.128.100 -> @., 'AUTO-UPDATE: mailchimp.com'
193.123.56.63 -> @., 'AUTO-UPDATE: mailchimp.com'
194.106.220.0/23 -> @., 'AUTO-UPDATE: messagelabs.com'
194.113.24.0/22 -> @., 'AUTO-UPDATE: ebay.com'
194.154.193.192/27 -> @., 'AUTO-UPDATE: amazon.com'
194.19.134.0/25 -> @., 'AUTO-UPDATE: inbox.com'
194.64.234.129 -> @., 'AUTO-UPDATE: paypal.com'
195.234.109.226/32 -> @., 'AUTO-UPDATE: tumblr.com'
195.245.230.0/23 -> @., 'AUTO-UPDATE: messagelabs.com'
195.54.172.0/23 -> @., 'AUTO-UPDATE: ebay.com'
198.178.234.57 -> @., 'AUTO-UPDATE: paypal.com'
198.2.128.0/18 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.128.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.132.0/22 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.136.0/23 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.145.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.177.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.178.0/23 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.180.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
198.2.186.0/23 -> @., 'AUTO-UPDATE: cloudflare.com'
198.21.0.0/21 -> @., 'AUTO-UPDATE: ebay.com'
198.244.48.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
198.244.59.30 -> @., 'AUTO-UPDATE: pinterest.com'
198.244.59.33 -> @., 'AUTO-UPDATE: pinterest.com'
198.244.59.35 -> @., 'AUTO-UPDATE: pinterest.com'
198.244.60.0/22 -> @., 'AUTO-UPDATE: mailgun.com'
198.245.80.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
198.245.81.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
198.252.206.125 -> @., 'AUTO-UPDATE: stackoverflow.com'
198.252.206.71 -> @., 'AUTO-UPDATE: stackoverflow.com'
198.37.144.0/20 -> @., 'AUTO-UPDATE: ebay.com'
198.37.152.186 -> @., 'AUTO-UPDATE: zendesk.com'
198.61.254.0/23 -> @., 'AUTO-UPDATE: mailgun.com'
198.61.254.21 -> @., 'AUTO-UPDATE: pinterest.com'
198.61.254.231 -> @., 'AUTO-UPDATE: paypal.com'
199.101.161.130 -> @., 'AUTO-UPDATE: linkedin.com'
199.101.162.0/25 -> @., 'AUTO-UPDATE: linkedin.com'
199.122.120.0/21 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
199.122.123.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
199.127.232.0/22 -> @., 'AUTO-UPDATE: amazon.com'
199.15.212.0/22 -> @., 'AUTO-UPDATE: cloudflare.com'
199.16.156.0/22 -> @., 'AUTO-UPDATE: twitter.com'
199.255.192.0/22 -> @., 'AUTO-UPDATE: amazon.com'
199.33.145.1 -> @., 'AUTO-UPDATE: mailchimp.com'
199.33.145.32 -> @., 'AUTO-UPDATE: mailchimp.com'
199.34.22.36/32 -> @., 'AUTO-UPDATE: zoho.com'
199.59.148.0/22 -> @., 'AUTO-UPDATE: twitter.com'
199.67.80.2/32 -> @., 'AUTO-UPDATE: zoho.com'
199.67.82.2/32 -> @., 'AUTO-UPDATE: zoho.com'
199.67.84.0/24 -> @., 'AUTO-UPDATE: zoho.com'
199.67.86.0/24 -> @., 'AUTO-UPDATE: zoho.com'
199.67.88.0/24 -> @., 'AUTO-UPDATE: zoho.com'
20.105.209.76/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.107.239.64/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.118.139.208/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.141.10.196 -> @., 'AUTO-UPDATE: microsoft.com'
20.185.214.0/27 -> @., 'AUTO-UPDATE: fbmta.com'
20.185.214.32/27 -> @., 'AUTO-UPDATE: fbmta.com'
20.185.214.64/27 -> @., 'AUTO-UPDATE: fbmta.com'
20.51.6.32/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.51.98.61 -> @., 'AUTO-UPDATE: constantcontact.com'
20.52.128.133 -> @., 'AUTO-UPDATE: zendesk.com'
20.52.52.2 -> @., 'AUTO-UPDATE: zendesk.com'
20.59.80.4/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.63.210.192/28 -> @., 'AUTO-UPDATE: microsoft.com'
20.69.8.108/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.83.222.104/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.88.157.184/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.94.180.64/28 -> @., 'AUTO-UPDATE: microsoft.com'
20.97.34.220/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.98.148.156/30 -> @., 'AUTO-UPDATE: microsoft.com'
20.98.194.68/30 -> @., 'AUTO-UPDATE: microsoft.com'
2001:4860:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
202.129.242.0/23 -> @., 'AUTO-UPDATE: exacttarget.com'
202.177.148.100 -> @., 'AUTO-UPDATE: microsoft.com'
202.177.148.110 -> @., 'AUTO-UPDATE: microsoft.com'
203.122.32.250 -> @., 'AUTO-UPDATE: microsoft.com'
203.145.57.160/27 -> @., 'AUTO-UPDATE: ebay.com'
203.32.4.25 -> @., 'AUTO-UPDATE: microsoft.com'
203.55.21.0/24 -> @., 'AUTO-UPDATE: ebay.com'
203.81.17.0/24 -> @., 'AUTO-UPDATE: amazon.com'
204.11.168.0/21 -> @., 'AUTO-UPDATE: icontact.com'
204.13.11.48/29 -> @., 'AUTO-UPDATE: paypal.com'
204.14.232.0/21 -> @., 'AUTO-UPDATE: exacttarget.com'
204.14.232.64/28 -> @., 'AUTO-UPDATE: icontact.com'
204.14.234.64/28 -> @., 'AUTO-UPDATE: paypal.com'
204.141.32.0/23 -> @., 'AUTO-UPDATE: zoho.com'
204.141.42.0/23 -> @., 'AUTO-UPDATE: zoho.com'
204.220.160.0/21 -> @., 'AUTO-UPDATE: mailgun.com'
204.220.168.0/21 -> @., 'AUTO-UPDATE: mailgun.com'
204.220.176.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
204.232.168.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
204.75.142.0/24 -> @., 'AUTO-UPDATE: ebay.com'
204.92.114.187 -> @., 'AUTO-UPDATE: paypal.com'
204.92.114.203 -> @., 'AUTO-UPDATE: twitter.com'
204.92.114.204/31 -> @., 'AUTO-UPDATE: twitter.com'
205.139.110.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
205.201.128.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
205.201.131.128/25 -> @., 'AUTO-UPDATE: cloudflare.com'
205.201.134.128/25 -> @., 'AUTO-UPDATE: cloudflare.com'
205.201.136.0/23 -> @., 'AUTO-UPDATE: cloudflare.com'
205.201.137.229 -> @., 'AUTO-UPDATE: ebay.com'
205.201.139.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
205.207.104.0/22 -> @., 'AUTO-UPDATE: constantcontact.com'
205.220.167.17 -> @., 'AUTO-UPDATE: instagram.com'
205.220.167.98 -> @., 'AUTO-UPDATE: constantcontact.com'
205.220.179.17 -> @., 'AUTO-UPDATE: instagram.com'
205.220.179.98 -> @., 'AUTO-UPDATE: constantcontact.com'
205.251.233.32/32 -> @., 'AUTO-UPDATE: amazon.com'
205.251.233.36/32 -> @., 'AUTO-UPDATE: amazon.com'
206.165.246.80/29 -> @., 'AUTO-UPDATE: ebay.com'
206.191.224.0/19 -> @., 'AUTO-UPDATE: microsoft.com'
206.246.157.1 -> @., 'AUTO-UPDATE: exacttarget.com'
206.25.247.143 -> @., 'AUTO-UPDATE: paypal.com'
206.25.247.155 -> @., 'AUTO-UPDATE: paypal.com'
206.55.144.0/20 -> @., 'AUTO-UPDATE: amazon.com'
207.126.144.0/20 -> @., 'AUTO-UPDATE: exacttarget.com'
207.171.160.0/19 -> @., 'AUTO-UPDATE: amazon.com'
207.211.30.128/25 -> @., 'AUTO-UPDATE: zendesk.com'
207.211.30.64/26 -> @., 'AUTO-UPDATE: zendesk.com'
207.211.31.0/25 -> @., 'AUTO-UPDATE: zendesk.com'
207.211.41.113 -> @., 'AUTO-UPDATE: zendesk.com'
207.218.90.122 -> @., 'AUTO-UPDATE: zendesk.com'
207.250.68.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
207.46.116.128/29 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.117.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.132.128/27 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.198.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.200.0/27 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.22.35 -> @., 'AUTO-UPDATE: microsoft.com'
207.46.4.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.50.192/26 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.50.224 -> @., 'AUTO-UPDATE: hotmail.com'
207.46.50.72 -> @., 'AUTO-UPDATE: microsoft.com'
207.46.50.82 -> @., 'AUTO-UPDATE: microsoft.com'
207.46.52.71 -> @., 'AUTO-UPDATE: microsoft.com'
207.46.52.79 -> @., 'AUTO-UPDATE: microsoft.com'
207.46.58.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
207.67.38.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
207.67.98.192/27 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
207.68.176.0/26 -> @., 'AUTO-UPDATE: hotmail.com'
207.68.176.96/27 -> @., 'AUTO-UPDATE: hotmail.com'
207.97.204.96/29 -> @., 'AUTO-UPDATE: constantcontact.com'
208.117.48.0/20 -> @., 'AUTO-UPDATE: ebay.com'
208.185.229.45 -> @., 'AUTO-UPDATE: paypal.com'
208.201.241.163 -> @., 'AUTO-UPDATE: paypal.com'
208.40.232.70 -> @., 'AUTO-UPDATE: paypal.com'
208.43.21.28/30 -> @., 'AUTO-UPDATE: exacttarget.com'
208.43.21.64/29 -> @., 'AUTO-UPDATE: exacttarget.com'
208.43.21.72/30 -> @., 'AUTO-UPDATE: exacttarget.com'
208.64.132.0/22 -> @., 'AUTO-UPDATE: paypal.com'
208.72.249.240/29 -> @., 'AUTO-UPDATE: paypal.com'
208.74.204.5 -> @., 'AUTO-UPDATE: constantcontact.com'
208.74.204.9 -> @., 'AUTO-UPDATE: constantcontact.com'
208.75.120.0/22 -> @., 'AUTO-UPDATE: constantcontact.com'
208.82.237.104/31 -> @., 'AUTO-UPDATE: craigslist.org'
208.82.237.96/29 -> @., 'AUTO-UPDATE: craigslist.org'
208.82.238.104/31 -> @., 'AUTO-UPDATE: craigslist.org'
208.82.238.96/29 -> @., 'AUTO-UPDATE: craigslist.org'
208.85.50.137 -> @., 'AUTO-UPDATE: paypal.com'
209.43.22.0/28 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
209.46.117.168 -> @., 'AUTO-UPDATE: paypal.com'
209.46.117.179 -> @., 'AUTO-UPDATE: paypal.com'
209.61.151.0/24 -> @., 'AUTO-UPDATE: mailgun.com'
209.61.151.236 -> @., 'AUTO-UPDATE: pinterest.com'
209.61.151.249 -> @., 'AUTO-UPDATE: pinterest.com'
209.61.151.251 -> @., 'AUTO-UPDATE: pinterest.com'
209.67.98.46 -> @., 'AUTO-UPDATE: paypal.com'
209.67.98.59 -> @., 'AUTO-UPDATE: paypal.com'
209.85.128.0/17 -> @., 'AUTO-UPDATE: cloudflare.com'
212.123.28.40/32 -> @., 'AUTO-UPDATE: amazon.com'
212.227.126.224 -> @., 'AUTO-UPDATE: gmx.com'
212.227.126.225 -> @., 'AUTO-UPDATE: gmx.com'
212.227.126.226 -> @., 'AUTO-UPDATE: gmx.com'
212.227.126.227 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.15 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.18 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.19 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.44 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.45 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.46 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.47 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.50 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.52 -> @., 'AUTO-UPDATE: gmx.com'
212.227.15.53 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.20 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.21 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.22 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.26 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.28 -> @., 'AUTO-UPDATE: gmx.com'
212.227.17.29 -> @., 'AUTO-UPDATE: gmx.com'
213.199.128.139 -> @., 'AUTO-UPDATE: microsoft.com'
213.199.128.145 -> @., 'AUTO-UPDATE: microsoft.com'
213.199.138.181 -> @., 'AUTO-UPDATE: microsoft.com'
213.199.138.191 -> @., 'AUTO-UPDATE: microsoft.com'
213.199.161.128/27 -> @., 'AUTO-UPDATE: hotmail.com'
213.199.177.0/26 -> @., 'AUTO-UPDATE: hotmail.com'
216.128.126.97 -> @., 'AUTO-UPDATE: paypal.com'
216.136.162.120/29 -> @., 'AUTO-UPDATE: paypal.com'
216.136.162.65 -> @., 'AUTO-UPDATE: paypal.com'
216.136.168.80/28 -> @., 'AUTO-UPDATE: paypal.com'
216.139.64.0/19 -> @., 'AUTO-UPDATE: fishbowl.com'
216.145.221.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
216.17.150.242 -> @., 'AUTO-UPDATE: constantcontact.com'
216.17.150.251 -> @., 'AUTO-UPDATE: constantcontact.com'
216.198.0.0/18 -> @., 'AUTO-UPDATE: cloudflare.com'
216.203.30.55 -> @., 'AUTO-UPDATE: exacttarget.com'
216.203.33.178/31 -> @., 'AUTO-UPDATE: exacttarget.com'
216.205.24.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
216.221.160.0/19 -> @., 'AUTO-UPDATE: amazon.com'
216.239.32.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
216.24.224.0/20 -> @., 'AUTO-UPDATE: icontact.com'
216.58.192.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
216.66.217.240/29 -> @., 'AUTO-UPDATE: paypal.com'
216.71.138.33 -> @., 'AUTO-UPDATE: mailchimp.com'
216.71.152.207 -> @., 'AUTO-UPDATE: ebay.com'
216.71.154.29 -> @., 'AUTO-UPDATE: ebay.com'
216.71.155.89 -> @., 'AUTO-UPDATE: ebay.com'
216.74.162.13 -> @., 'AUTO-UPDATE: ebay.com'
216.74.162.14 -> @., 'AUTO-UPDATE: ebay.com'
216.82.240.0/20 -> @., 'AUTO-UPDATE: messagelabs.com'
216.99.5.67 -> @., 'AUTO-UPDATE: microsoft.com'
216.99.5.68 -> @., 'AUTO-UPDATE: microsoft.com'
217.175.194.0/24 -> @., 'AUTO-UPDATE: ebay.com'
217.77.141.52 -> @., 'AUTO-UPDATE: microsoft.com'
217.77.141.59 -> @., 'AUTO-UPDATE: microsoft.com'
222.73.195.64/29 -> @., 'AUTO-UPDATE: icloud.com'
223.165.113.0/24 -> @., 'AUTO-UPDATE: ebay.com'
223.165.115.0/24 -> @., 'AUTO-UPDATE: ebay.com'
223.165.118.0/23 -> @., 'AUTO-UPDATE: ebay.com'
223.165.120.0/23 -> @., 'AUTO-UPDATE: ebay.com'
23.103.224.0/19 -> @., 'AUTO-UPDATE: microsoft.com'
23.249.208.0/20 -> @., 'AUTO-UPDATE: amazon.com'
23.251.224.0/19 -> @., 'AUTO-UPDATE: amazon.com'
23.253.141.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
23.253.182.0/23 -> @., 'AUTO-UPDATE: mailgun.com'
23.253.182.103 -> @., 'AUTO-UPDATE: cloudflare.com'
23.253.183.145 -> @., 'AUTO-UPDATE: cloudflare.com'
23.253.183.146 -> @., 'AUTO-UPDATE: cloudflare.com'
23.253.183.147 -> @., 'AUTO-UPDATE: cloudflare.com'
23.253.183.148 -> @., 'AUTO-UPDATE: cloudflare.com'
23.253.183.150 -> @., 'AUTO-UPDATE: cloudflare.com'
2404:6800:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
2607:13c0:0001:0000:0000:0000:0000:7000/116 -> @., 'AUTO-UPDATE: zoho.com'
2607:13c0:0002:0000:0000:0000:0000:1000/116 -> @., 'AUTO-UPDATE: zoho.com'
2607:13c0:0004:0000:0000:0000:0000:0000/116 -> @., 'AUTO-UPDATE: zoho.com'
2607:f8b0:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
2620:109:c003:104::/64 -> @., 'AUTO-UPDATE: linkedin.com'
2620:109:c006:104::/64 -> @., 'AUTO-UPDATE: linkedin.com'
2620:109:c00d:104::/64 -> @., 'AUTO-UPDATE: linkedin.com'
2620:10d:c090:400::8:1 -> @., 'AUTO-UPDATE: instagram.com'
2620:10d:c091:400::8:1 -> @., 'AUTO-UPDATE: instagram.com'
2620:10d:c09b:400::8:1 -> @., 'AUTO-UPDATE: instagram.com'
2620:10d:c09c:400::8:1 -> @., 'AUTO-UPDATE: instagram.com'
2620:119:50c0:207::/64 -> @., 'AUTO-UPDATE: linkedin.com'
2800:3f0:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
2a00:1450:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
2a01:111:f400::/48 -> @., 'AUTO-UPDATE: github.com'
2a01:111:f403:8000::/50 -> @., 'AUTO-UPDATE: hotmail.com'
2a01:111:f403:8000::/51 -> @., 'AUTO-UPDATE: github.com'
2a01:111:f403::/49 -> @., 'AUTO-UPDATE: github.com'
2a01:111:f403:c000::/51 -> @., 'AUTO-UPDATE: github.com'
2a01:111:f403:f000::/52 -> @., 'AUTO-UPDATE: github.com'
2a01:7e01::f03c:91ff:fe74:9543 -> @., 'AUTO-UPDATE: iredmail.org'
2a01:7e01::f03c:93ff:fe25:7e10 -> @., 'AUTO-UPDATE: iredmail.org'
2a02:6b8:0:1472::/64 -> @., 'AUTO-UPDATE: yandex.ru'
2a02:6b8:0:1619::/64 -> @., 'AUTO-UPDATE: yandex.ru'
2a02:6b8:0:1a2d::/64 -> @., 'AUTO-UPDATE: yandex.ru'
2a02:6b8:0:801::/64 -> @., 'AUTO-UPDATE: yandex.ru'
2a02:6b8:c00::/40 -> @., 'AUTO-UPDATE: yandex.ru'
2c0f:fb50:4000::/36 -> @., 'AUTO-UPDATE: cloudflare.com'
3.129.120.190 -> @., 'AUTO-UPDATE: zendesk.com'
3.210.190.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
3.64.143.187 -> @., 'AUTO-UPDATE: cloudfiltering.com'
3.70.123.177 -> @., 'AUTO-UPDATE: zendesk.com'
3.78.6.244 -> @., 'AUTO-UPDATE: cloudfiltering.com'
3.93.157.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
3.94.40.108 -> @., 'AUTO-UPDATE: fbmta.com'
34.195.217.107 -> @., 'AUTO-UPDATE: zendesk.com'
34.215.104.144 -> @., 'AUTO-UPDATE: zendesk.com'
34.218.116.3 -> @., 'AUTO-UPDATE: constantcontact.com'
34.225.212.172/32 -> @., 'AUTO-UPDATE: icontact.com'
35.161.32.253 -> @., 'AUTO-UPDATE: zendesk.com'
35.167.93.243 -> @., 'AUTO-UPDATE: zendesk.com'
35.176.132.251 -> @., 'AUTO-UPDATE: mailchimp.com'
35.190.247.0/24 -> @., 'AUTO-UPDATE: cloudflare.com'
35.191.0.0/16 -> @., 'AUTO-UPDATE: cloudflare.com'
35.205.92.9 -> @., 'AUTO-UPDATE: messagelabs.com'
35.242.169.159 -> @., 'AUTO-UPDATE: messagelabs.com'
37.140.190.0/23 -> @., 'AUTO-UPDATE: yandex.ru'
40.107.0.0/16 -> @., 'AUTO-UPDATE: github.com'
40.112.65.63 -> @., 'AUTO-UPDATE: microsoft.com'
40.233.64.216 -> @., 'AUTO-UPDATE: constantcontact.com'
40.233.83.78 -> @., 'AUTO-UPDATE: constantcontact.com'
40.233.88.28 -> @., 'AUTO-UPDATE: constantcontact.com'
40.92.0.0/15 -> @., 'AUTO-UPDATE: github.com'
40.92.0.0/16 -> @., 'AUTO-UPDATE: hotmail.com'
44.193.121.189 -> @., 'AUTO-UPDATE: stackoverflow.com'
44.206.138.57 -> @., 'AUTO-UPDATE: zendesk.com'
44.217.45.156/32 -> @., 'AUTO-UPDATE: fishbowl.com'
44.236.56.93 -> @., 'AUTO-UPDATE: zendesk.com'
44.238.220.251 -> @., 'AUTO-UPDATE: zendesk.com'
45.14.148.0/22 -> @., 'AUTO-UPDATE: mailjet.com'
46.19.170.16 -> @., 'AUTO-UPDATE: constantcontact.com'
46.226.48.0/21 -> @., 'AUTO-UPDATE: messagelabs.com'
5.45.198.0/23 -> @., 'AUTO-UPDATE: yandex.ru'
5.45.224.0/25 -> @., 'AUTO-UPDATE: yandex.ru'
50.18.121.236 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.121.248 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.123.221 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.124.70 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.125.237 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.125.97 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.126.162 -> @., 'AUTO-UPDATE: exacttarget.com'
50.18.45.249 -> @., 'AUTO-UPDATE: exacttarget.com'
50.31.32.0/19 -> @., 'AUTO-UPDATE: ebay.com'
50.31.36.205 -> @., 'AUTO-UPDATE: sendgrid.com'
50.56.130.220 -> @., 'AUTO-UPDATE: constantcontact.com'
50.56.130.221 -> @., 'AUTO-UPDATE: constantcontact.com'
50.56.130.222 -> @., 'AUTO-UPDATE: constantcontact.com'
51.250.56.144/28 -> @., 'AUTO-UPDATE: yandex.ru'
51.250.56.16/28 -> @., 'AUTO-UPDATE: yandex.ru'
51.250.56.80/28 -> @., 'AUTO-UPDATE: yandex.ru'
52.1.14.157 -> @., 'AUTO-UPDATE: mailchimp.com'
52.100.0.0/15 -> @., 'AUTO-UPDATE: github.com'
52.102.0.0/16 -> @., 'AUTO-UPDATE: github.com'
52.103.0.0/17 -> @., 'AUTO-UPDATE: github.com'
52.119.213.144/28 -> @., 'AUTO-UPDATE: amazon.com'
52.185.106.240/28 -> @., 'AUTO-UPDATE: microsoft.com'
52.207.191.216 -> @., 'AUTO-UPDATE: zendesk.com'
52.222.62.51 -> @., 'AUTO-UPDATE: mailchimp.com'
52.222.73.120/32 -> @., 'AUTO-UPDATE: mailchimp.com'
52.222.73.83 -> @., 'AUTO-UPDATE: mailchimp.com'
52.222.75.85 -> @., 'AUTO-UPDATE: mailchimp.com'
52.222.89.228 -> @., 'AUTO-UPDATE: mailchimp.com'
52.234.172.96/28 -> @., 'AUTO-UPDATE: microsoft.com'
52.235.253.128 -> @., 'AUTO-UPDATE: microsoft.com'
52.236.28.240/28 -> @., 'AUTO-UPDATE: microsoft.com'
52.28.63.81 -> @., 'AUTO-UPDATE: zendesk.com'
52.37.142.146 -> @., 'AUTO-UPDATE: zendesk.com'
52.38.191.241 -> @., 'AUTO-UPDATE: stackoverflow.com'
52.5.230.59/32 -> @., 'AUTO-UPDATE: icontact.com'
52.50.24.208 -> @., 'AUTO-UPDATE: reddit.com'
52.58.216.183 -> @., 'AUTO-UPDATE: zendesk.com'
52.59.143.3 -> @., 'AUTO-UPDATE: zendesk.com'
52.60.115.116 -> @., 'AUTO-UPDATE: mailchimp.com'
52.60.41.5 -> @., 'AUTO-UPDATE: zendesk.com'
52.61.91.9 -> @., 'AUTO-UPDATE: mailchimp.com'
52.71.0.205/32 -> @., 'AUTO-UPDATE: icontact.com'
52.73.203.75 -> @., 'AUTO-UPDATE: stackoverflow.com'
52.94.124.0/28 -> @., 'AUTO-UPDATE: amazon.com'
52.95.48.152/29 -> @., 'AUTO-UPDATE: amazon.com'
52.95.49.88/29 -> @., 'AUTO-UPDATE: amazon.com'
54.165.19.38 -> @., 'AUTO-UPDATE: fbmta.com'
54.174.52.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
54.174.57.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
54.174.59.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
54.174.60.0/23 -> @., 'AUTO-UPDATE: fishbowl.com'
54.174.63.0/24 -> @., 'AUTO-UPDATE: fishbowl.com'
54.186.193.102/32 -> @., 'AUTO-UPDATE: mailchimp.com'
54.191.223.56 -> @., 'AUTO-UPDATE: zendesk.com'
54.213.20.246 -> @., 'AUTO-UPDATE: zendesk.com'
54.214.39.184 -> @., 'AUTO-UPDATE: paypal.com'
54.240.0.0/18 -> @., 'AUTO-UPDATE: amazon.com'
54.240.64.0/19 -> @., 'AUTO-UPDATE: amazon.com'
54.240.96.0/19 -> @., 'AUTO-UPDATE: amazon.com'
54.241.16.209 -> @., 'AUTO-UPDATE: paypal.com'
54.244.242.0/24 -> @., 'AUTO-UPDATE: paypal.com'
54.255.61.23 -> @., 'AUTO-UPDATE: zendesk.com'
54.90.148.255/32 -> @., 'AUTO-UPDATE: icontact.com'
62.17.146.128/26 -> @., 'AUTO-UPDATE: exacttarget.com'
62.253.227.114 -> @., 'AUTO-UPDATE: github.com'
63.128.21.0/24 -> @., 'AUTO-UPDATE: zendesk.com'
63.80.14.0/23 -> @., 'AUTO-UPDATE: paypal.com'
64.127.115.252 -> @., 'AUTO-UPDATE: paypal.com'
64.132.88.0/23 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
64.132.92.0/24 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
64.18.0.0/20 -> @., 'AUTO-UPDATE: exacttarget.com'
64.20.241.45 -> @., 'AUTO-UPDATE: exacttarget.com'
64.207.219.10 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.11 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.12 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.13 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.135 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.136 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.137 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.138 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.139 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.14 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.140 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.141 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.142 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.143 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.15 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.7 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.71 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.72 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.73 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.74 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.75 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.76 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.77 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.78 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.79 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.8 -> @., 'AUTO-UPDATE: linkedin.com'
64.207.219.9 -> @., 'AUTO-UPDATE: linkedin.com'
64.233.160.0/19 -> @., 'AUTO-UPDATE: cloudflare.com'
64.69.212.0/24 -> @., 'AUTO-UPDATE: mailchimp.com'
64.79.155.192 -> @., 'AUTO-UPDATE: zendesk.com'
64.79.155.193 -> @., 'AUTO-UPDATE: zendesk.com'
64.79.155.205 -> @., 'AUTO-UPDATE: zendesk.com'
64.79.155.206 -> @., 'AUTO-UPDATE: zendesk.com'
65.110.161.77 -> @., 'AUTO-UPDATE: paypal.com'
65.123.29.213/32 -> @., 'AUTO-UPDATE: icontact.com'
65.123.29.220/32 -> @., 'AUTO-UPDATE: icontact.com'
65.154.166.0/24 -> @., 'AUTO-UPDATE: zoho.com'
65.212.180.36 -> @., 'AUTO-UPDATE: paypal.com'
65.52.80.137/32 -> @., 'AUTO-UPDATE: microsoft.com'
65.54.121.120/29 -> @., 'AUTO-UPDATE: hotmail.com'
65.54.190.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
65.54.241.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
65.54.51.64/26 -> @., 'AUTO-UPDATE: hotmail.com'
65.54.61.64/26 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.111.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.113.64/26 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.116.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.126.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.174.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.178.128/27 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.234.192/26 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.29.77 -> @., 'AUTO-UPDATE: microsoft.com'
65.55.33.64/28 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.34.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.42.224/28 -> @., 'AUTO-UPDATE: microsoft.com'
65.55.52.224/27 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.78.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.81.48/28 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.90.0/24 -> @., 'AUTO-UPDATE: hotmail.com'
65.55.94.0/25 -> @., 'AUTO-UPDATE: hotmail.com'
66.102.0.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
66.119.150.192/26 -> @., 'AUTO-UPDATE: microsoft.com'
66.162.193.226/31 -> @., 'AUTO-UPDATE: icontact.com'
66.170.126.97 -> @., 'AUTO-UPDATE: paypal.com'
66.211.170.88/29 -> @., 'AUTO-UPDATE: paypal.com'
66.211.184.0/23 -> @., 'AUTO-UPDATE: ebay.com'
66.220.144.128/25 -> @., 'AUTO-UPDATE: facebook.com'
66.220.155.0/24 -> @., 'AUTO-UPDATE: facebook.com'
66.220.157.0/25 -> @., 'AUTO-UPDATE: facebook.com'
66.231.80.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
66.249.80.0/20 -> @., 'AUTO-UPDATE: cloudflare.com'
67.219.240.0/20 -> @., 'AUTO-UPDATE: messagelabs.com'
67.221.168.65 -> @., 'AUTO-UPDATE: paypal.com'
67.228.2.24/30 -> @., 'AUTO-UPDATE: exacttarget.com'
67.228.21.184/29 -> @., 'AUTO-UPDATE: exacttarget.com'
67.228.37.4/30 -> @., 'AUTO-UPDATE: exacttarget.com'
67.23.31.6 -> @., 'AUTO-UPDATE: exacttarget.com'
67.231.145.42 -> @., 'AUTO-UPDATE: instagram.com'
67.231.153.30 -> @., 'AUTO-UPDATE: instagram.com'
67.72.99.26 -> @., 'AUTO-UPDATE: paypal.com'
68.232.140.138 -> @., 'AUTO-UPDATE: mailchimp.com'
68.232.157.143 -> @., 'AUTO-UPDATE: ebay.com'
68.232.192.0/20 -> @., 'AUTO-UPDATE: cust-spf.exacttarget.com'
69.162.98.0/24 -> @., 'AUTO-UPDATE: exacttarget.com'
69.169.224.0/20 -> @., 'AUTO-UPDATE: amazon.com'
69.63.178.128/25 -> @., 'AUTO-UPDATE: facebook.com'
69.63.181.0/24 -> @., 'AUTO-UPDATE: facebook.com'
69.63.184.0/25 -> @., 'AUTO-UPDATE: facebook.com'
69.65.42.195 -> @., 'AUTO-UPDATE: exacttarget.com'
69.65.49.192/29 -> @., 'AUTO-UPDATE: exacttarget.com'
69.72.32.0/20 -> @., 'AUTO-UPDATE: mailgun.com'
69.72.40.93 -> @., 'AUTO-UPDATE: pinterest.com'
69.72.40.94/31 -> @., 'AUTO-UPDATE: pinterest.com'
69.72.40.96/30 -> @., 'AUTO-UPDATE: pinterest.com'
69.72.47.205 -> @., 'AUTO-UPDATE: pinterest.com'
70.37.151.128/25 -> @., 'AUTO-UPDATE: hotmail.com'
70.42.149.35 -> @., 'AUTO-UPDATE: fbmta.com'
72.14.192.0/18 -> @., 'AUTO-UPDATE: cloudflare.com'
72.21.192.0/19 -> @., 'AUTO-UPDATE: amazon.com'
72.21.217.142/32 -> @., 'AUTO-UPDATE: amazon.com'
74.112.67.243 -> @., 'AUTO-UPDATE: paypal.com'
74.125.0.0/16 -> @., 'AUTO-UPDATE: cloudflare.com'
74.202.227.40/32 -> @., 'AUTO-UPDATE: icontact.com'
74.208.4.200 -> @., 'AUTO-UPDATE: mail.com'
74.208.4.201 -> @., 'AUTO-UPDATE: mail.com'
74.208.4.220 -> @., 'AUTO-UPDATE: mail.com'
74.208.4.221 -> @., 'AUTO-UPDATE: mail.com'
74.209.250.0/24 -> @., 'AUTO-UPDATE: fbmta.com'
74.63.234.75 -> @., 'AUTO-UPDATE: exacttarget.com'
74.63.236.0/24 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.113.28/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.129.240/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.131.208/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.132.208/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.160.160/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.164.188/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.171.192/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.195.28/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.207.36/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.226.216/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.236.240/30 -> @., 'AUTO-UPDATE: exacttarget.com'
74.86.241.250/31 -> @., 'AUTO-UPDATE: exacttarget.com'
75.2.70.75 -> @., 'AUTO-UPDATE: fishbowl.com'
76.223.128.0/19 -> @., 'AUTO-UPDATE: amazon.com'
76.223.176.0/20 -> @., 'AUTO-UPDATE: amazon.com'
77.88.28.0/24 -> @., 'AUTO-UPDATE: yandex.ru'
77.88.29.0/24 -> @., 'AUTO-UPDATE: yandex.ru'
8.20.114.31 -> @., 'AUTO-UPDATE: paypal.com'
8.25.194.0/23 -> @., 'AUTO-UPDATE: twitter.com'
8.25.196.0/23 -> @., 'AUTO-UPDATE: twitter.com'
8.39.54.0/23 -> @., 'AUTO-UPDATE: zoho.com'
8.40.222.0/23 -> @., 'AUTO-UPDATE: zoho.com'
81.223.46.0/27 -> @., 'AUTO-UPDATE: paypal.com'
82.165.159.12 -> @., 'AUTO-UPDATE: gmx.com'
82.165.159.13 -> @., 'AUTO-UPDATE: gmx.com'
82.165.159.130 -> @., 'AUTO-UPDATE: mail.com'
82.165.159.131 -> @., 'AUTO-UPDATE: mail.com'
82.165.159.14 -> @., 'AUTO-UPDATE: gmx.com'
82.165.159.40 -> @., 'AUTO-UPDATE: gmx.com'
82.165.159.41 -> @., 'AUTO-UPDATE: gmx.com'
82.165.159.42 -> @., 'AUTO-UPDATE: gmx.com'
85.158.136.0/21 -> @., 'AUTO-UPDATE: messagelabs.com'
86.61.88.25 -> @., 'AUTO-UPDATE: microsoft.com'
87.238.80.0/21 -> @., 'AUTO-UPDATE: amazon.com'
87.253.232.0/21 -> @., 'AUTO-UPDATE: mailgun.com'
91.211.240.0/22 -> @., 'AUTO-UPDATE: ebay.com'
94.245.112.0/27 -> @., 'AUTO-UPDATE: hotmail.com'
94.245.112.10/31 -> @., 'AUTO-UPDATE: hotmail.com'
95.108.130.0/23 -> @., 'AUTO-UPDATE: yandex.ru'
95.108.205.0/24 -> @., 'AUTO-UPDATE: yandex.ru'
95.131.104.0/21 -> @., 'AUTO-UPDATE: messagelabs.com'
96.43.144.0/20 -> @., 'AUTO-UPDATE: exacttarget.com'
96.43.144.64/28 -> @., 'AUTO-UPDATE: paypal.com'
96.43.144.64/31 -> @., 'AUTO-UPDATE: twitter.com'
96.43.148.64/28 -> @., 'AUTO-UPDATE: paypal.com'
96.43.148.64/31 -> @., 'AUTO-UPDATE: twitter.com'
96.43.151.64/28 -> @., 'AUTO-UPDATE: paypal.com'
98.97.248.0/21 -> @., 'AUTO-UPDATE: mailchimp.com'
99.78.197.208/28 -> @., 'AUTO-UPDATE: amazon.com'
99.83.190.102 -> @., 'AUTO-UPDATE: fishbowl.com'
@yahoo.com -> @., 'AUTO-UPDATE: aol.com'
@yahoo.net -> @., 'AUTO-UPDATE: aol.com'
#

(4)旧仕様クライアント対策

2018年設定時に発生した「postfix/dovecotメールサーバでWindows Live Mail 2012がエラーになる

Windows Live メールなど古いクライアントに対する対応

公式:Allow insecure POP3/IMAP/SMTP connections without STARTTLS

POP3/IMAPについてdovecotにdisable_plaintext_authとsslの設定がどのように行われているか確認

# grep disable_plaintext_auth *
grep: conf.d: Is a directory
dovecot.conf:# With disable_plaintext_auth=yes AND ssl=required, STARTTLS is mandatory.
dovecot.conf:# Set disable_plaintext_auth=no AND ssl=yes to allow plain password transmitted
dovecot.conf:disable_plaintext_auth = yes
dovecot.conf:#   disable_plaintext_auth = no
dovecot.conf.2024.12.05.10.09.03:# for authentication checks). disable_plaintext_auth is also ignored for
# grep disable_plaintext_auth */*
conf.d/10-auth.conf:#disable_plaintext_auth = yes
conf.d/10-auth.conf:# NOTE: See also disable_plaintext_auth setting.
#
# grep -e "ssl =" -e "ssl=" *
grep: conf.d: Is a directory
dovecot.conf:ssl = required
dovecot.conf:verbose_ssl = no
dovecot.conf:# With disable_plaintext_auth=yes AND ssl=required, STARTTLS is mandatory.
dovecot.conf:# Set disable_plaintext_auth=no AND ssl=yes to allow plain password transmitted
dovecot.conf:    #    ssl = yes
dovecot.conf:    #    ssl = yes
# grep -e "ssl =" -e "ssl=" */*
conf.d/10-auth.conf:# See also ssl=required setting.
conf.d/10-logging.conf:#verbose_ssl = no
conf.d/10-master.conf:    #ssl = yes
conf.d/10-master.conf:    #ssl = yes
conf.d/20-submission.conf:#submission_relay_ssl = no
#

/etc/dovecot以下を検索すると上記のようになっていた。

これをsslをrequired→yes, disable_plaintext_authをyes→noに変更するのだが、/etc/dovecot/dovecot.conf に修正を入れた。

また、TLSv1.2以降をサポートとなっているが、 /var/log/dovecot/dovecot.log を確認すると、「encryption_protocol=TLSv1, encryption_cipher=ECDHE-ECDSA-AES256-SHA,」なんてユーザがいたので、設定を確認

# SSL: Global settings.
# Refer to wiki site for per protocol, ip, server name SSL settings:
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl_min_protocol = TLSv1.2

上記を「ssl_min_protocol = TLSv1」に変えればいけるか?と思ったけど、AlmaLinuxのopenssl側がTLSv1.0, TLSv1.1対応の設定になっていなかった

opensslの設定としてはTLSv1.0もある

# openssl ciphers -v 'ALL:COMPLEMENTOFALL'
TLS_AES_256_GCM_SHA384         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(256)            Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256   TLSv1.3 Kx=any      Au=any   Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(128)            Mac=AEAD
TLS_AES_128_CCM_SHA256         TLSv1.3 Kx=any      Au=any   Enc=AESCCM(128)            Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256)            Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2 Kx=ECDH     Au=RSA   Enc=AESGCM(256)            Mac=AEAD
DHE-DSS-AES256-GCM-SHA384      TLSv1.2 Kx=DH       Au=DSS   Enc=AESGCM(256)            Mac=AEAD
DHE-RSA-AES256-GCM-SHA384      TLSv1.2 Kx=DH       Au=RSA   Enc=AESGCM(256)            Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305  TLSv1.2 Kx=ECDH     Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305    TLSv1.2 Kx=ECDH     Au=RSA   Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-RSA-CHACHA20-POLY1305      TLSv1.2 Kx=DH       Au=RSA   Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-ECDSA-AES256-CCM         TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESCCM(256)            Mac=AEAD
DHE-RSA-AES256-CCM             TLSv1.2 Kx=DH       Au=RSA   Enc=AESCCM(256)            Mac=AEAD
ECDHE-ECDSA-ARIA256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=ARIAGCM(256)           Mac=AEAD
ECDHE-ARIA256-GCM-SHA384       TLSv1.2 Kx=ECDH     Au=RSA   Enc=ARIAGCM(256)           Mac=AEAD
DHE-DSS-ARIA256-GCM-SHA384     TLSv1.2 Kx=DH       Au=DSS   Enc=ARIAGCM(256)           Mac=AEAD
DHE-RSA-ARIA256-GCM-SHA384     TLSv1.2 Kx=DH       Au=RSA   Enc=ARIAGCM(256)           Mac=AEAD
ADH-AES256-GCM-SHA384          TLSv1.2 Kx=DH       Au=None  Enc=AESGCM(256)            Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256  TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128)            Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256    TLSv1.2 Kx=ECDH     Au=RSA   Enc=AESGCM(128)            Mac=AEAD
DHE-DSS-AES128-GCM-SHA256      TLSv1.2 Kx=DH       Au=DSS   Enc=AESGCM(128)            Mac=AEAD
DHE-RSA-AES128-GCM-SHA256      TLSv1.2 Kx=DH       Au=RSA   Enc=AESGCM(128)            Mac=AEAD
ECDHE-ECDSA-AES128-CCM         TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESCCM(128)            Mac=AEAD
DHE-RSA-AES128-CCM             TLSv1.2 Kx=DH       Au=RSA   Enc=AESCCM(128)            Mac=AEAD
ECDHE-ECDSA-ARIA128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=ARIAGCM(128)           Mac=AEAD
ECDHE-ARIA128-GCM-SHA256       TLSv1.2 Kx=ECDH     Au=RSA   Enc=ARIAGCM(128)           Mac=AEAD
DHE-DSS-ARIA128-GCM-SHA256     TLSv1.2 Kx=DH       Au=DSS   Enc=ARIAGCM(128)           Mac=AEAD
DHE-RSA-ARIA128-GCM-SHA256     TLSv1.2 Kx=DH       Au=RSA   Enc=ARIAGCM(128)           Mac=AEAD
ADH-AES128-GCM-SHA256          TLSv1.2 Kx=DH       Au=None  Enc=AESGCM(128)            Mac=AEAD
ECDHE-ECDSA-AES256-CCM8        TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESCCM8(256)           Mac=AEAD
ECDHE-ECDSA-AES128-CCM8        TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESCCM8(128)           Mac=AEAD
DHE-RSA-AES256-CCM8            TLSv1.2 Kx=DH       Au=RSA   Enc=AESCCM8(256)           Mac=AEAD
DHE-RSA-AES128-CCM8            TLSv1.2 Kx=DH       Au=RSA   Enc=AESCCM8(128)           Mac=AEAD
ECDHE-ECDSA-AES256-SHA384      TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)               Mac=SHA384
ECDHE-RSA-AES256-SHA384        TLSv1.2 Kx=ECDH     Au=RSA   Enc=AES(256)               Mac=SHA384
DHE-RSA-AES256-SHA256          TLSv1.2 Kx=DH       Au=RSA   Enc=AES(256)               Mac=SHA256
DHE-DSS-AES256-SHA256          TLSv1.2 Kx=DH       Au=DSS   Enc=AES(256)               Mac=SHA256
ECDHE-ECDSA-CAMELLIA256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=Camellia(256)          Mac=SHA384
ECDHE-RSA-CAMELLIA256-SHA384   TLSv1.2 Kx=ECDH     Au=RSA   Enc=Camellia(256)          Mac=SHA384
DHE-RSA-CAMELLIA256-SHA256     TLSv1.2 Kx=DH       Au=RSA   Enc=Camellia(256)          Mac=SHA256
DHE-DSS-CAMELLIA256-SHA256     TLSv1.2 Kx=DH       Au=DSS   Enc=Camellia(256)          Mac=SHA256
ADH-AES256-SHA256              TLSv1.2 Kx=DH       Au=None  Enc=AES(256)               Mac=SHA256
ADH-CAMELLIA256-SHA256         TLSv1.2 Kx=DH       Au=None  Enc=Camellia(256)          Mac=SHA256
ECDHE-ECDSA-AES128-SHA256      TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)               Mac=SHA256
ECDHE-RSA-AES128-SHA256        TLSv1.2 Kx=ECDH     Au=RSA   Enc=AES(128)               Mac=SHA256
DHE-RSA-AES128-SHA256          TLSv1.2 Kx=DH       Au=RSA   Enc=AES(128)               Mac=SHA256
DHE-DSS-AES128-SHA256          TLSv1.2 Kx=DH       Au=DSS   Enc=AES(128)               Mac=SHA256
ECDHE-ECDSA-CAMELLIA128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=Camellia(128)          Mac=SHA256
ECDHE-RSA-CAMELLIA128-SHA256   TLSv1.2 Kx=ECDH     Au=RSA   Enc=Camellia(128)          Mac=SHA256
DHE-RSA-CAMELLIA128-SHA256     TLSv1.2 Kx=DH       Au=RSA   Enc=Camellia(128)          Mac=SHA256
DHE-DSS-CAMELLIA128-SHA256     TLSv1.2 Kx=DH       Au=DSS   Enc=Camellia(128)          Mac=SHA256
ADH-AES128-SHA256              TLSv1.2 Kx=DH       Au=None  Enc=AES(128)               Mac=SHA256
ADH-CAMELLIA128-SHA256         TLSv1.2 Kx=DH       Au=None  Enc=Camellia(128)          Mac=SHA256
ECDHE-ECDSA-AES256-SHA         TLSv1   Kx=ECDH     Au=ECDSA Enc=AES(256)               Mac=SHA1
ECDHE-RSA-AES256-SHA           TLSv1   Kx=ECDH     Au=RSA   Enc=AES(256)               Mac=SHA1
DHE-RSA-AES256-SHA             SSLv3   Kx=DH       Au=RSA   Enc=AES(256)               Mac=SHA1
DHE-DSS-AES256-SHA             SSLv3   Kx=DH       Au=DSS   Enc=AES(256)               Mac=SHA1
DHE-RSA-CAMELLIA256-SHA        SSLv3   Kx=DH       Au=RSA   Enc=Camellia(256)          Mac=SHA1
DHE-DSS-CAMELLIA256-SHA        SSLv3   Kx=DH       Au=DSS   Enc=Camellia(256)          Mac=SHA1
AECDH-AES256-SHA               TLSv1   Kx=ECDH     Au=None  Enc=AES(256)               Mac=SHA1
ADH-AES256-SHA                 SSLv3   Kx=DH       Au=None  Enc=AES(256)               Mac=SHA1
ADH-CAMELLIA256-SHA            SSLv3   Kx=DH       Au=None  Enc=Camellia(256)          Mac=SHA1
ECDHE-ECDSA-AES128-SHA         TLSv1   Kx=ECDH     Au=ECDSA Enc=AES(128)               Mac=SHA1
ECDHE-RSA-AES128-SHA           TLSv1   Kx=ECDH     Au=RSA   Enc=AES(128)               Mac=SHA1
DHE-RSA-AES128-SHA             SSLv3   Kx=DH       Au=RSA   Enc=AES(128)               Mac=SHA1
DHE-DSS-AES128-SHA             SSLv3   Kx=DH       Au=DSS   Enc=AES(128)               Mac=SHA1
DHE-RSA-CAMELLIA128-SHA        SSLv3   Kx=DH       Au=RSA   Enc=Camellia(128)          Mac=SHA1
DHE-DSS-CAMELLIA128-SHA        SSLv3   Kx=DH       Au=DSS   Enc=Camellia(128)          Mac=SHA1
AECDH-AES128-SHA               TLSv1   Kx=ECDH     Au=None  Enc=AES(128)               Mac=SHA1
ADH-AES128-SHA                 SSLv3   Kx=DH       Au=None  Enc=AES(128)               Mac=SHA1
ADH-CAMELLIA128-SHA            SSLv3   Kx=DH       Au=None  Enc=Camellia(128)          Mac=SHA1
RSA-PSK-AES256-GCM-SHA384      TLSv1.2 Kx=RSAPSK   Au=RSA   Enc=AESGCM(256)            Mac=AEAD
DHE-PSK-AES256-GCM-SHA384      TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESGCM(256)            Mac=AEAD
RSA-PSK-CHACHA20-POLY1305      TLSv1.2 Kx=RSAPSK   Au=RSA   Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-PSK-CHACHA20-POLY1305      TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-PSK-CHACHA20-POLY1305    TLSv1.2 Kx=ECDHEPSK Au=PSK   Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-PSK-AES256-CCM             TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESCCM(256)            Mac=AEAD
RSA-PSK-ARIA256-GCM-SHA384     TLSv1.2 Kx=RSAPSK   Au=RSA   Enc=ARIAGCM(256)           Mac=AEAD
DHE-PSK-ARIA256-GCM-SHA384     TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=ARIAGCM(256)           Mac=AEAD
AES256-GCM-SHA384              TLSv1.2 Kx=RSA      Au=RSA   Enc=AESGCM(256)            Mac=AEAD
AES256-CCM                     TLSv1.2 Kx=RSA      Au=RSA   Enc=AESCCM(256)            Mac=AEAD
ARIA256-GCM-SHA384             TLSv1.2 Kx=RSA      Au=RSA   Enc=ARIAGCM(256)           Mac=AEAD
PSK-AES256-GCM-SHA384          TLSv1.2 Kx=PSK      Au=PSK   Enc=AESGCM(256)            Mac=AEAD
PSK-CHACHA20-POLY1305          TLSv1.2 Kx=PSK      Au=PSK   Enc=CHACHA20/POLY1305(256) Mac=AEAD
PSK-AES256-CCM                 TLSv1.2 Kx=PSK      Au=PSK   Enc=AESCCM(256)            Mac=AEAD
PSK-ARIA256-GCM-SHA384         TLSv1.2 Kx=PSK      Au=PSK   Enc=ARIAGCM(256)           Mac=AEAD
RSA-PSK-AES128-GCM-SHA256      TLSv1.2 Kx=RSAPSK   Au=RSA   Enc=AESGCM(128)            Mac=AEAD
DHE-PSK-AES128-GCM-SHA256      TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESGCM(128)            Mac=AEAD
DHE-PSK-AES128-CCM             TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESCCM(128)            Mac=AEAD
RSA-PSK-ARIA128-GCM-SHA256     TLSv1.2 Kx=RSAPSK   Au=RSA   Enc=ARIAGCM(128)           Mac=AEAD
DHE-PSK-ARIA128-GCM-SHA256     TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=ARIAGCM(128)           Mac=AEAD
AES128-GCM-SHA256              TLSv1.2 Kx=RSA      Au=RSA   Enc=AESGCM(128)            Mac=AEAD
AES128-CCM                     TLSv1.2 Kx=RSA      Au=RSA   Enc=AESCCM(128)            Mac=AEAD
ARIA128-GCM-SHA256             TLSv1.2 Kx=RSA      Au=RSA   Enc=ARIAGCM(128)           Mac=AEAD
PSK-AES128-GCM-SHA256          TLSv1.2 Kx=PSK      Au=PSK   Enc=AESGCM(128)            Mac=AEAD
PSK-AES128-CCM                 TLSv1.2 Kx=PSK      Au=PSK   Enc=AESCCM(128)            Mac=AEAD
PSK-ARIA128-GCM-SHA256         TLSv1.2 Kx=PSK      Au=PSK   Enc=ARIAGCM(128)           Mac=AEAD
DHE-PSK-AES256-CCM8            TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESCCM8(256)           Mac=AEAD
DHE-PSK-AES128-CCM8            TLSv1.2 Kx=DHEPSK   Au=PSK   Enc=AESCCM8(128)           Mac=AEAD
AES256-CCM8                    TLSv1.2 Kx=RSA      Au=RSA   Enc=AESCCM8(256)           Mac=AEAD
AES128-CCM8                    TLSv1.2 Kx=RSA      Au=RSA   Enc=AESCCM8(128)           Mac=AEAD
PSK-AES256-CCM8                TLSv1.2 Kx=PSK      Au=PSK   Enc=AESCCM8(256)           Mac=AEAD
PSK-AES128-CCM8                TLSv1.2 Kx=PSK      Au=PSK   Enc=AESCCM8(128)           Mac=AEAD
AES256-SHA256                  TLSv1.2 Kx=RSA      Au=RSA   Enc=AES(256)               Mac=SHA256
CAMELLIA256-SHA256             TLSv1.2 Kx=RSA      Au=RSA   Enc=Camellia(256)          Mac=SHA256
AES128-SHA256                  TLSv1.2 Kx=RSA      Au=RSA   Enc=AES(128)               Mac=SHA256
CAMELLIA128-SHA256             TLSv1.2 Kx=RSA      Au=RSA   Enc=Camellia(128)          Mac=SHA256
ECDHE-PSK-AES256-CBC-SHA384    TLSv1   Kx=ECDHEPSK Au=PSK   Enc=AES(256)               Mac=SHA384
ECDHE-PSK-AES256-CBC-SHA       TLSv1   Kx=ECDHEPSK Au=PSK   Enc=AES(256)               Mac=SHA1
SRP-DSS-AES-256-CBC-SHA        SSLv3   Kx=SRP      Au=DSS   Enc=AES(256)               Mac=SHA1
SRP-RSA-AES-256-CBC-SHA        SSLv3   Kx=SRP      Au=RSA   Enc=AES(256)               Mac=SHA1
SRP-AES-256-CBC-SHA            SSLv3   Kx=SRP      Au=SRP   Enc=AES(256)               Mac=SHA1
RSA-PSK-AES256-CBC-SHA384      TLSv1   Kx=RSAPSK   Au=RSA   Enc=AES(256)               Mac=SHA384
DHE-PSK-AES256-CBC-SHA384      TLSv1   Kx=DHEPSK   Au=PSK   Enc=AES(256)               Mac=SHA384
RSA-PSK-AES256-CBC-SHA         SSLv3   Kx=RSAPSK   Au=RSA   Enc=AES(256)               Mac=SHA1
DHE-PSK-AES256-CBC-SHA         SSLv3   Kx=DHEPSK   Au=PSK   Enc=AES(256)               Mac=SHA1
ECDHE-PSK-CAMELLIA256-SHA384   TLSv1   Kx=ECDHEPSK Au=PSK   Enc=Camellia(256)          Mac=SHA384
RSA-PSK-CAMELLIA256-SHA384     TLSv1   Kx=RSAPSK   Au=RSA   Enc=Camellia(256)          Mac=SHA384
DHE-PSK-CAMELLIA256-SHA384     TLSv1   Kx=DHEPSK   Au=PSK   Enc=Camellia(256)          Mac=SHA384
AES256-SHA                     SSLv3   Kx=RSA      Au=RSA   Enc=AES(256)               Mac=SHA1
CAMELLIA256-SHA                SSLv3   Kx=RSA      Au=RSA   Enc=Camellia(256)          Mac=SHA1
PSK-AES256-CBC-SHA384          TLSv1   Kx=PSK      Au=PSK   Enc=AES(256)               Mac=SHA384
PSK-AES256-CBC-SHA             SSLv3   Kx=PSK      Au=PSK   Enc=AES(256)               Mac=SHA1
PSK-CAMELLIA256-SHA384         TLSv1   Kx=PSK      Au=PSK   Enc=Camellia(256)          Mac=SHA384
ECDHE-PSK-AES128-CBC-SHA256    TLSv1   Kx=ECDHEPSK Au=PSK   Enc=AES(128)               Mac=SHA256
ECDHE-PSK-AES128-CBC-SHA       TLSv1   Kx=ECDHEPSK Au=PSK   Enc=AES(128)               Mac=SHA1
SRP-DSS-AES-128-CBC-SHA        SSLv3   Kx=SRP      Au=DSS   Enc=AES(128)               Mac=SHA1
SRP-RSA-AES-128-CBC-SHA        SSLv3   Kx=SRP      Au=RSA   Enc=AES(128)               Mac=SHA1
SRP-AES-128-CBC-SHA            SSLv3   Kx=SRP      Au=SRP   Enc=AES(128)               Mac=SHA1
RSA-PSK-AES128-CBC-SHA256      TLSv1   Kx=RSAPSK   Au=RSA   Enc=AES(128)               Mac=SHA256
DHE-PSK-AES128-CBC-SHA256      TLSv1   Kx=DHEPSK   Au=PSK   Enc=AES(128)               Mac=SHA256
RSA-PSK-AES128-CBC-SHA         SSLv3   Kx=RSAPSK   Au=RSA   Enc=AES(128)               Mac=SHA1
DHE-PSK-AES128-CBC-SHA         SSLv3   Kx=DHEPSK   Au=PSK   Enc=AES(128)               Mac=SHA1
ECDHE-PSK-CAMELLIA128-SHA256   TLSv1   Kx=ECDHEPSK Au=PSK   Enc=Camellia(128)          Mac=SHA256
RSA-PSK-CAMELLIA128-SHA256     TLSv1   Kx=RSAPSK   Au=RSA   Enc=Camellia(128)          Mac=SHA256
DHE-PSK-CAMELLIA128-SHA256     TLSv1   Kx=DHEPSK   Au=PSK   Enc=Camellia(128)          Mac=SHA256
AES128-SHA                     SSLv3   Kx=RSA      Au=RSA   Enc=AES(128)               Mac=SHA1
CAMELLIA128-SHA                SSLv3   Kx=RSA      Au=RSA   Enc=Camellia(128)          Mac=SHA1
PSK-AES128-CBC-SHA256          TLSv1   Kx=PSK      Au=PSK   Enc=AES(128)               Mac=SHA256
PSK-AES128-CBC-SHA             SSLv3   Kx=PSK      Au=PSK   Enc=AES(128)               Mac=SHA1
PSK-CAMELLIA128-SHA256         TLSv1   Kx=PSK      Au=PSK   Enc=Camellia(128)          Mac=SHA256
ECDHE-ECDSA-NULL-SHA           TLSv1   Kx=ECDH     Au=ECDSA Enc=None                   Mac=SHA1
ECDHE-RSA-NULL-SHA             TLSv1   Kx=ECDH     Au=RSA   Enc=None                   Mac=SHA1
AECDH-NULL-SHA                 TLSv1   Kx=ECDH     Au=None  Enc=None                   Mac=SHA1
NULL-SHA256                    TLSv1.2 Kx=RSA      Au=RSA   Enc=None                   Mac=SHA256
ECDHE-PSK-NULL-SHA384          TLSv1   Kx=ECDHEPSK Au=PSK   Enc=None                   Mac=SHA384
ECDHE-PSK-NULL-SHA256          TLSv1   Kx=ECDHEPSK Au=PSK   Enc=None                   Mac=SHA256
ECDHE-PSK-NULL-SHA             TLSv1   Kx=ECDHEPSK Au=PSK   Enc=None                   Mac=SHA1
RSA-PSK-NULL-SHA384            TLSv1   Kx=RSAPSK   Au=RSA   Enc=None                   Mac=SHA384
RSA-PSK-NULL-SHA256            TLSv1   Kx=RSAPSK   Au=RSA   Enc=None                   Mac=SHA256
DHE-PSK-NULL-SHA384            TLSv1   Kx=DHEPSK   Au=PSK   Enc=None                   Mac=SHA384
DHE-PSK-NULL-SHA256            TLSv1   Kx=DHEPSK   Au=PSK   Enc=None                   Mac=SHA256
RSA-PSK-NULL-SHA               SSLv3   Kx=RSAPSK   Au=RSA   Enc=None                   Mac=SHA1
DHE-PSK-NULL-SHA               SSLv3   Kx=DHEPSK   Au=PSK   Enc=None                   Mac=SHA1
NULL-SHA                       SSLv3   Kx=RSA      Au=RSA   Enc=None                   Mac=SHA1
NULL-MD5                       SSLv3   Kx=RSA      Au=RSA   Enc=None                   Mac=MD5
PSK-NULL-SHA384                TLSv1   Kx=PSK      Au=PSK   Enc=None                   Mac=SHA384
PSK-NULL-SHA256                TLSv1   Kx=PSK      Au=PSK   Enc=None                   Mac=SHA256
PSK-NULL-SHA                   SSLv3   Kx=PSK      Au=PSK   Enc=None                   Mac=SHA1
#

しかし、opensslの設定で使えるcipherに入っていない。

# cat /etc/crypto-policies/back-ends/opensslcnf.config
CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:kRSAPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256
TLS.MinProtocol = TLSv1.2
TLS.MaxProtocol = TLSv1.3
DTLS.MinProtocol = DTLSv1.2
DTLS.MaxProtocol = DTLSv1.2
SignatureAlgorithms = ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:ed25519:ed448:rsa_pss_pss_sha256:rsa_pss_pss_sha384:rsa_pss_pss_sha512:rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224
Groups = X25519:secp256r1:X448:secp521r1:secp384r1:ffdhe2048:ffdhe3072:ffdhe4096:ffdhe6144:ffdhe8192
#

これを変更するのはどうなのかな?と思って、TLSv1.0.,1.1は無効のまま切り替えを実施したが、現状は問題が出ていない

(5) 他サーバで送信された自ドメインが受信拒否される

2018年設定時に発生した「postfixを使用したiredmailで他サーバで送信された自ドメインメールが受信拒否される

フォーラムにある「SMTP AUTH is required for users under this sender domain (Mailing list」にある/opt/iredapd/settings.py に「CHECK_SPF_IF_LOGIN_MISMATCH = True」を追加して、iredapd.serviceを再起動する、を今回も採用した。

(6) Barracudacentralがメールを拒否しすぎる問題

2018年設定時に発生した問題「iRedMailの初期設定から変えたところ 2018/08/21版

現状のpostfix設定をpostconf -vを実行して、確認すると以下が設定されている

postscreen_dnsbl_sites = zen.spamhaus.org=127.0.0.[2..11]*3 b.barracudacentral.org=127.0.0.2*2

あれから6年たってるけど、改めて有効化する勇気は持てなかったので、現状踏襲として、以下で設定した。

postscreen_dnsbl_sites = zen.spamhaus.org=127.0.0.[2..11]*3

postconf -vコマンドは全体をまとめた出力になるので、実際に設定されている場所を確認すると /etc/postfix/main.cf だったので該当箇所は下記のようになった

# Attention:
#   - zen.spamhaus.org free tire has 3 limits
#     (https://www.spamhaus.org/organization/dnsblusage/):
#
#     1) Your use of the Spamhaus DNSBLs is non-commercial*, and
#     2) Your email traffic is less than 100,000 SMTP connections per day, and
#     3) Your DNSBL query volume is less than 300,000 queries per day.
#
#   - FAQ: "Your DNSBL blocks nothing at all!"
#     https://www.spamhaus.org/faq/section/DNSBL%20Usage#261
#
# It's strongly recommended to use a local DNS server for cache.
postscreen_dnsbl_sites =
    zen.spamhaus.org=127.0.0.[2..11]*3
#    b.barracudacentral.org=127.0.0.2*2

postscreen_dnsbl_reply_map = texthash:/etc/postfix/postscreen_dnsbl_reply
postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access.cidr

(7) mail.goo.ne.jp メールの拒否解除

2018年設定時に発生した問題「iRedMailの初期設定から変えたところ 2018/08/21版

iredmailが用意している/etc/postfix/helo_access.pcreを見てみると、2024年でも引き続き mail.goo.ne.jpメールが明示的に拒否されていた

変更前

/^(mail\.goo\.ne\.jp)$/ REJECT ACCESS DENIED. Your email was rejected because it appears to come from a known spamming mail server (${1})

変更後

###/^(mail\.goo\.ne\.jp)$/ REJECT ACCESS DENIED. Your email was rejected because it appears to come from a known spamming mail server (${1})

(8) IPアドレスが入ったホスト名拒否設定の一部解除

2018年設定時に発生した問題「iRedMailの初期設定から変えたところ 2018/08/21版

ホスト名にIPアドレスが含まれていると拒否する設定があるので、設定を一部変更する。
家庭用回線などnetwork-192-168.0.100.ぷろばいだ.ne.jpという感じでIPアドレスがもろに埋め込まれたホスト名が使われている。
それに対して、メールサーバは多くの場合、ちゃんと命名されていることが多い。

2018年の時よりbypass設定されてるものが増えていた

変更前

# bypass "[IP_ADDRESS]"
/^\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]$/ OK

# Bypass HELOs used by known big ISPs which contains IP address
/\.outbound-(email|mail)\.sendgrid\.net$/ OK
/^\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.mail-.*\.facebook\.com$/ OK
/^outbound-\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.pinterestmail\.com$/ OK
/\.outbound\.protection\.outlook\.com$/ OK
/^ec2-\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\..*\.compute\.amazonaws\.com$/ OK
/^out\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.mail\.qq\.com$/ OK

変更後….2018年だと最後が「DUNNO」だったのが、2024年設定だと「OK」に変わっていたので揃えた

# bypass "[IP_ADDRESS]"
/^\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]$/ OK

# Bypass HELOs used by known big ISPs which contains IP address
/\.outbound-(email|mail)\.sendgrid\.net$/ OK
/^\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.mail-.*\.facebook\.com$/ OK
/^outbound-\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.pinterestmail\.com$/ OK
/\.outbound\.protection\.outlook\.com$/ OK
/^ec2-\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\..*\.compute\.amazonaws\.com$/ OK
/^out\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.mail\.qq\.com$/ OK

### add for yawata-lions.com
/^sv(\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}).*.seedshosting.jp$/ OK
### add for shop-pro.jp
# mail-10-200-1-137.mitaka.shop-pro.jp
/^mail-(\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3})/ OK
### add for salesforce
/^smtp*\.mta\.salesforce\.com$/ OK

(9) heloでDNSに登録されていないホスト名しゃべるメールサーバの取り扱い

ml2.vector.co.jp から送られてくるメールは www05.vector.co.jp を名乗っているがDNS登録がなくてエラーになっていた。

Dec 16 10:25:42 ml2 postfix/smtpd[502984]: NOQUEUE: reject: RCPT from ml2.vector.co.jp[180.214.37.169]: 450 4.7.1 &lt;www05.vector.co.jp>: Helo command rejected: Host not found; from=&lt;shopmgr@ml.vector.co.jp> to=&lt;xxxxx@xxxxxx.jp> proto=ESMTP helo=&lt;www05.vector.co.jp>

これ、こっちの設定の問題なのかな?と思いながら確認したところ、トレンドマイクロのWebにちょうどいい物が・・・「配送先のメールサーバから”Helo command rejected: Host not found”といったエラーが返却されて、メールが配送できません。

原因
InterScan MSS/IMSVA/DDEIがメール配送時にSMTP HELO/EHLOコマンドで指定した自ホスト名が、配送先メールサーバ側で名前解決できなかったことが原因になります。
デフォルトでは、InterScan MSS/IMSVA/DDEIのOSのホスト名がSMTP HELO/EHLOコマンドで使用されます。
メールサーバによっては、「SMTPクライアントがSMTP HELO/EHLOコマンドで指定するホスト名」に対し、対応するAレコードまたはMXレコードがDNSから確認できない場合に受信拒否を行うことがあります。
なお、RFC 2821(Simple Mail Transfer Protocol) の 3.6 Domains では、SMTP EHLOコマンドで指定するホスト名が名前解決できることを求めています。
例として、postfixにはこのような機能があります。当該機能に抵触すると、以下のようなSMTP応答をSMTPクライアントに返却し、メールの受信を拒否いたします。
 450 4.7.1 <ホスト名>: Helo command rejected: Host not found

というわけで、送ってくるやつが悪、と

とはいえ、解除できるのか?と確認

iredmailフォーラム「Helo command rejected: Host not found 450 4.7.1 – error [FIXED]」に smtpd_helo_restrictions の記載とあるので新旧サーバのpostconf -vを比較

旧サーバ
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated check_helo_access pcre:/etc/postfix/helo_access.pcre

新サーバ
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated check_helo_access pcre:/etc/postfix/helo_access.pcre reject_non_fqdn_helo_hostname reject_unknown_helo_hostname

なるほど・・・確認したら2018年のpostfix/dovecotメールサーバでWindows Live Mail 2012がエラーになる でreject_non_fqdn_helo_hostname, reject_unknown_helo_hostname を削除した、という記録が残っていた。

ということで、まずは /etc/postfix/main.cf の smtpd_helo_restrictionsからとりあえず reject_unknown_helo_hostnameだけを削除して動作状況確認

・・・設定後に再送されてきたvectorメールはHost not foundになっているので、reject_non_fqdn_helo_hostname も削除してみると、受信成功

というわけで、今回も smtpd_helo_restrictions から reject_non_fqdn_helo_hostnameと reject_unknown_helo_hostname を削除した。

(10) SOGoのタイムゾーン変更

/etc/sogo/sogo.conf に「SOGoTimeZone = “America/New_York”;」という設定があるので「SOGoTimeZone = “Asia/Tokyo”;」に書き換える。

(11) 切り替え後の運用状況確認

rejectの確認

メール受信で想定外の拒否が起きてないかを「tail -f /var/log/maillog |grep reject」で確認

“Recipient address rejected: Intentional policy rejection, please try again later”はgreylist関連で15分後の再送要求なので、ずっと同じfromとtoで発生していない限りは無視

Dec 16 13:34:39 ml2 postfix/smtpd[528122]: NOQUEUE: reject: RCPT from mta-sndfb-e01.mail.nifty.com[106.153.226.65]: 451 4.7.1 &lt;xxxx@xxxx.jp>: Recipient address rejected: Intentional policy rejection, please try again later; from=&lt;yyyy@yyyy.com> to=&lt;xxxx@xxxx.jp> proto=ESMTP helo=&lt;mta-sndfb-e01.mail.nifty.com>

“Sender address rejected: Domain not found”は、存在しないドメインからのメールなので受け取れなくて問題ない。

Dec 16 13:32:44 ml2 postfix/smtpd[528122]: NOQUEUE: reject: RCPT from unknown[178.170.191.125]: 450 4.1.8 &lt;yyyy@yyyy.com>: Sender address rejected: Domain not found; from=&lt;yyyy@yyyy.com> to=&lt;xxxx@xxxx.jp> proto=ESMTP helo=&lt;mx01.vbudushee.ru>

“Helo command rejected: Host not found”は、本来メールサーバホスト名はDNSに登録してる必要があるのに登録していないサーバから送信されてきてる、というのもなんだけど、有名どころでも登録してない場合がちらほらあるので、/etc/postfix/main.cf の smtpd_helo_restrictions設定を見直し

Dec 16 11:35:50 ml2 postfix/smtpd[513244]: NOQUEUE: reject: RCPT from ml2.vector.co.jp[180.214.37.169]: 450 4.7.1 &lt;www05.vector.co.jp>: Helo command rejected: Host not found; from=&lt;yyyyyy@ml.vector.co.jp> to=&lt;xxxx@xxxx.jp> proto=ESMTP helo=&lt;www05.vector.co.jp>

pop3/imap認証のエラー確認

メール取得で認証のエラーを出してないか確認

「tail -f /var/log/dovecot/imap.log|grep “auth fail”」「tail -f /var/log/dovecot/pop3.log|grep “auth fail”」

Dec 16 09:43:22 ml2 dovecot[414228]: imap-login: Disconnected: Connection closed (auth failed, 1 attempts in 8 secs): user=&lt;xxx@xxx.jp>, method=PLAIN, rip=xx.xx.xx.xx, lip=yy.yy.yy.yy, TLS, TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits), session=&lt;qTdBd1gps43Ssvsh>
Dec 16 11:14:37 ml2 dovecot[414228]: imap-login: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=&lt;yyy@yyy.com>, method=PLAIN, rip=xx.xx.xx.xx, lip=yy.yy.yy.yy, TLS: Connection closed, TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits), session=&lt;SbLtvVkpCuUjSoVw>
Dec 16 08:07:46 ml2 dovecot[414228]: pop3-login: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=&lt;yyy@yyy.com>, method=PLAIN, rip=xx.xx.xx.xx, lip=yy.yy.yy.yy, session=&lt;SeOzIVcpZLE5tnGw>
Dec 16 08:25:44 ml2 dovecot[414228]: pop3-login: Disconnected: Aborted login by logging out (auth failed, 1 attempts in 2 secs): user=&lt;xxx@xxx.jp>, method=PLAIN, rip=xx.xx.xx.xx, lip=yy.yy.yy.yy, TLS, TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits), session=&lt;xrf1YVcp9P2Zrq1g>

基本的にどっちも元IPである”rip=”のあとのIPアドレスの所属を調べて、妥当な場所からのアクセスだったら、該当ユーザに電話などで連絡を取って状況を確認

メール受信時のgreylist処理詳細確認

iredapdを使用したメール受信時のgreylist処理のログ /var/log/iredapd/iredapd.log を確認

ざらっと見てたら、いまどき暗号化無し(encryption_protocol= の値がなし)なのは大量メール送信者ぐらいって感じでしたね

ポイント系

ponta.jp
tsite.jp

決済系

docomo-bill.ne.jp (偽物かと思ったら、本物のNTTファイナンス ntt-finance.co.jp でした)

一般サイト

abema.tv
b-cle.com
bestrsv.com
e-trend.co.jp
gnavi.co.jp
yodobashi.com

DM送信業者

cuenote.jp
emberpoint.com
mpse.jp

変な業者

tubox.jp
ec-tools.jp
myselection.net

(12) spamasssasin の設定移植

spamasssasin にいろいろカスタマイズしていたので、その設定を移動

むかし www.flcl.org/~yoh/user_prefs で配布していたものを /etc/mail/spamassassin/japancustom として保存しているので、コピー

また、いろいろカスタムした内容を /etc/mail/spamassassin/private_prefs として保存しているので、コピー

この2ファイルを組み込むように /etc/mail/spamassassin/local.cf の最後に以下を追加

include japancustom
include private_prefs

で spamasssasind を再起動しようとしたら起動してないし、届いたメールのヘッダを確認したら X-Spam-Status とかが存在していない

どういうことか確認したら「Amavisd + SpamAssassin not working? no mail header (X-Spam-*) inserted」を発見。amavisdのなかからspamassassinを起動してるので常時動いてるわけじゃない、というのと、標準だとX-Spamを付けない状態、ということだった。

旧サーバでの設定を確認

#$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level
$sa_tag_level_deflt = -999;
$sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level
$sa_tag2_level_deflt = 15;
#$sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g. blocks mail)
$sa_kill_level_deflt = 100;
#$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent
$sa_dsn_cutoff_level = 100;
$sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From
# $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off
$penpals_bonus_score = 8;    # (no effect without a @storage_sql_dsn database)
$penpals_threshold_high = $sa_kill_level_deflt;  # don't waste time on hi spam
$bounce_killer_score = 100;  # spam score points to add for joe-jobbed bounces

$sa_mail_body_size_limit = 400*1024; # don't waste time on SA if mail is larger
$sa_local_tests_only = 0;    # only tests which do not require internet access?

新サーバでの設定は?と見てみると

$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g. blocks mail)
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent
$sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From
#$sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off

$sa_mail_body_size_limit = 400*1024; # don't waste time on SA if mail is larger
$sa_local_tests_only = 0;    # only tests which do not require internet access?

設定を見比べて思い出した

2018年時点で、標準だとSPAM判定が厳しいなぁ、ということがあったので緩和していました(Webに書いてなかったので忘れてた)

ヘッダーに「X-Spam」を表示するため $sa_tag_level_deflt を 2.0 → -999

殺す率を下げるために $sa_tag2_level_deflt を 6.2 → 15

$sa_kill_level_deflt を 6.9 から 100

$sa_dsn_cutoff_level を 10 から 100

という形で設定した

(13) logwatchの設定調整

logwatchを入れた状態だとpostfixに関してのunmatchが非常に多量に出力される

フォーラムに「Logwatch postfix: a lot of unmatched entries」があり、 /etc/logwatch/conf/services/postfix.conf で 「$postfix_Enable_Long_Queue_Ids = Yes」を設定する、とある。

初期値は「$postfix_Enable_Long_Queue_Ids = No」だったので変更して logwatch –output stdout を実行してみたのだが、postfixは問題なくなったものの、それ以外がまだ多い・・・

特に dovecotに関する出力では lda からの具体的なメールファイルの取り扱い記録が出力されている

/etc/logwatch/conf/services/dovecot.conf は postfix.conf と違って設定可能項目が少ない。

フォーラム見ると「 logwatch and dovecot produce lot of output」で ignore に設定しろ、とある。

とりあえず以下を設定した

# cat /etc/logwatch/conf/ignore.conf
###### REGULAR EXPRESSIONS IN THIS FILE WILL BE TRIMMED FROM REPORT OUTPUT #####
### for dovecot imap,lda
: sieve: from=
: expunge: box=
: copy from
: delete: box=
# maildir move error?
: Expunged message reappeared, giving a new UID
: Warning: Fixed a duplicate:
#

とりあえず問題なさそうに見える

(14) logwatchのdovecotスクリプトカスタマイズ

logwatchのdovecot で pop3 / imap のログイン回数がわかるが、アカウントが乗っ取られた時に如実に表れるのは接続してくるIPアドレスの多さになるので、各アカウントごとに接続に成功したIPアドレス数をカウントすると、なんとなく検知できるようになる

まず、標準のservices/dovecot の設定だとサーバ全体の回数しかわからないので、ユーザごとについても出力できるようにする

/etc/logwatch/conf/services/dovecot.conf の「#$dovecot_detail = 10」を「$dovecot_detail = 10」に変更

で・・・gmail, outlook, などのメールサーバ側でpop3アクセスしてメールを取ってくる、って設定をしている場合、これらのサーバからのアクセスIPはかなりいろいろある。特にgmail

これらをまるっと出力をまとめるために /etc/logwatch/scripts/services/dovecot に修正を入れた

gmailもoutlookもIPv6アドレスが多かったので頻出したものを登録した。

変更前のPOP3部分

   } elsif ( (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?pop3-login: Login: (.*?) \[(.*)\]/ ) ) or
             (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?pop3-login: (?:Info: )?Login: user=\&lt;(.*?)\>.*rip=(.*), lip=/ ) ) ) {
      if ($Host !~ /$IgnoreHost/) {
         $Host = hostName($Host);
         $Login{$User}{$Host}++;
         $LoginPOP3{$User}++;
         $ConnectionPOP3{$Host}++;
         $Connection{$Host}++;
      }

変更後のPOP3部分

   } elsif ( (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?pop3-login: Login: (.*?) \[(.*)\]/ ) ) or
             (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?pop3-login: (?:Info: )?Login: user=\&lt;(.*?)\>.*rip=(.*), lip=/ ) ) ) {
      if ($Host !~ /$IgnoreHost/) {
         $Host = hostName($Host);
         if(($Host =~ /mail-[a-z][a-z0-9]*-[a-z][a-z0-9]*\.google\.com/)
                ||($Host =~ /2001:4860:4864:/)
                ||($Host =~ /2607:f8b0:4864:/)
                ||($Host =~ /2a00:1450:4864:/)
                ){
             $Host = "access from Gmail server(POP3)";
         }
         if(($Host =~ /40\.99\.44\.229/)
                ||($Host =~ /40\.99\.251\.133/)
                ||($Host =~ /2603:1036:/)
                ){
             $Host = "access from Microsoft server(POP3)";
         }
         $Login{$User}{$Host}++;
         $LoginPOP3{$User}++;
         $ConnectionPOP3{$Host}++;
         $Connection{$Host}++;
      }

変更前のIMAP部分

   } elsif ( (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?imap-login: Login: (.*?) \[(.*)\]/ ) ) or
             (my ($User, $Host, $Session) = ( $ThisLine =~ /^(?:$dovecottag )?imap-login: (?:Info: )?Login: user=\&lt;(.*?)\>.*rip=(.*), lip=.*, session=&lt;([^>]+)>/ ) ) ) {
      if ($Host !~ /$IgnoreHost/) {
         $Host = hostName($Host);
         $Login{$User}{$Host}++;
         $LoginIMAP{$User}++;
         $ConnectionIMAP{$Host}++;
         $Connection{$Host}++;
         if (defined($MUASessionList{$Session})) {
             $MUAList{$MUASessionList{$Session}}{$User}++;
             delete $MUASessionList{$Session};
         }
      }

変更後のIMAP部分

   } elsif ( (my ($User, $Host) = ( $ThisLine =~ /^(?:$dovecottag )?imap-login: Login: (.*?) \[(.*)\]/ ) ) or
             (my ($User, $Host, $Session) = ( $ThisLine =~ /^(?:$dovecottag )?imap-login: (?:Info: )?Login: user=\&lt;(.*?)\>.*rip=(.*), lip=.*, session=&lt;([^>]+)>/ ) ) ) {
      if ($Host !~ /$IgnoreHost/) {
         $Host = hostName($Host);
         if(($Host =~ /mail-[a-z][a-z0-9]*-[a-z][a-z0-9]*\.google\.com/)
                ||($Host =~ /2001:4860:4864:/)
                ||($Host =~ /2607:f8b0:4864:/)
                ||($Host =~ /2a00:1450:4864:/)
                ){
             $Host = "access from Gmail server(IMAP)";
         }
         if(($Host =~ /40\.99\.44\.229/)
                ||($Host =~ /40\.99\.251\.133/)
                ||($Host =~ /2603:1036:/)
                ){
             $Host = "access from Microsoft server(IMAP)";
         }
         $Login{$User}{$Host}++;
         $LoginIMAP{$User}++;
         $ConnectionIMAP{$Host}++;
         $Connection{$Host}++;
         if (defined($MUASessionList{$Session})) {
             $MUAList{$MUASessionList{$Session}}{$User}++;
             delete $MUASessionList{$Session};
         }
      }

(15) logrotateの設定調整

メールログなど長期保存した方がいいので、設定変更をした

/etc/logrotate.conf への修正

rotate 4 → rotate 30

#compress → compress

maillog, dovecot/* の設定が現状 weekly になってるが、元のメールサーバではdailyに変更して日々のメール取扱量が曜日によって変わるかをわかりやすくしていた。

今回は、どうせ必要になることは少ないんだからweeklyのままにしておくか、ということにした。

(16) Let’s Encrypt によるSSL対応を dehydrated を使って行う

公式手順 Request a free cert from Let’s Encrypt (for servers deployed with downloadable iRedMail installer) だと certbot コマンドを使っているが、私は単純化されているdehydratedを使っている。

EPELはiredmailインストール時に有効にしているので「dnf install dehydrated」でインストールできる。

証明書発行時に使う /.well-known/acme-challenge/ へのアクセスを nginx に実施

/etc/nginx/templates/dehydrated.tmpl に以下を記載

location ^~ /.well-known/acme-challenge/ {
  access_log on;
  autoindex off;
  alias /var/www/dehydrated/;
}

/etc/nginx/sites-available/00-default.conf にinclude /etc/nginx/templates/dehydrated.tmpl; を追加

#
# Note: This file must be loaded before other virtual host config files,
#
# HTTP
server {
    # Listen on ipv4
    listen 80;
    listen [::]:80;

    server_name _;

    include /etc/nginx/templates/dehydrated.tmpl;
    # Redirect all insecure http:// requests to https://
    return 301 https://$host$request_uri;
}

/etc/nginx/sites-available/00-default-ssl.conf にも追加

#
# Note: This file must be loaded before other virtual host config files,
#
# HTTP
server {
    # Listen on ipv4
    listen 80;
    listen [::]:80;

    server_name _;

    include /etc/nginx/templates/dehydrated.tmpl;
    # Redirect all insecure http:// requests to https://
    return 301 https://$host$request_uri;
}
[root@ml2 nginx]# cat sites-available/00-default-ssl.conf
#
# Note: This file must be loaded before other virtual host config files,
#
# HTTPS
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name _;

    root /var/www/html;
    index index.php index.html;

    include /etc/nginx/templates/misc.tmpl;
    include /etc/nginx/templates/ssl.tmpl;
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    include /etc/nginx/templates/netdata.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;
    include /etc/nginx/templates/stub_status.tmpl;
    include /etc/nginx/templates/dehydrated.tmpl;
}

追加した後はnginxを再起動

/etc/dehydrated/domain.txt に発行したいSSL証明書のFQDNをすべて1行に列挙

「dehydrated –register」「dehydrated –register –accept-terms」で登録を行い、「dehydrated –cron」でSSL証明書を発行

で、証明書が発行されたら、Use Let’s Encrypt cert 記載のようなかたちで /etc/pki/tls のファイルを /etc/dehydrated/certs/<FQDN>/ に置き換える作業を行う

また、証明書が発行された場合に自動的に関連するサービスを再起動して読み込み直す処理を入れるため /etc/dehydrated/hook.sh の deploy_cert() { に追加する

deploy_cert() {
  local DOMAIN="${1}" KEYFILE="${2}" CERTFILE="${3}" FULLCHAINFILE="${4}" CHAINFILE="${5}" TIMESTAMP="${6}"

  # 略
  # systemctl reload nginx.service
    chmod a+r /etc/dehydrated/certs/${DOMAIN}/fullchain-*.pem
    chmod a+r /etc/dehydrated/certs/${DOMAIN}/privkey-*.pem
    /usr/bin/systemctl restart postfix.service
    /usr/bin/systemctl restart dovecot.service
    /usr/bin/systemctl restart nginx.service
    /usr/bin/systemctl restart sogod.service
    /usr/bin/systemctl restart mariadb.service
}

最後にdehydratedが自動実行されるように dehydrated.timer 設定を入れるため systemctl enable dehydrated.timer を実行する

systemctl status dehydrated.timer
systemctl enable dehydrated.timer
systemctl status dehydrated.timer

(17) logwatchに spamhaus 登録検知?

最初は問題なく運用できていたのだが、spamhaus に IPv6 逆引きができない、という理由でSPAM登録されるという事態が発生した。

実際には複数の異なるネットワーク上に存在するサーバにてdigコマンドを使ってちゃんと応答が返ってくるにも関わらず、というくそな状態

/var/log/maillog を確認すると下記のような「blocked using Spamhaus.」というログがあった

Dec 23 14:22:12 サーバ名 postfix/smtp[1969195]: 4YGmc31klrz9sls: to=&lt;osakanataro@ドメイン>, relay=hotmail-com.olc.protection.outlook.com[52.101.42.11]:25, delay=0.98, delays=0/0.02/0.85/0.11, dsn=5.7.1, status=bounced (host hotmail-com.olc.protection.outlook.com[52.101.42.11] said: 550 5.7.1 Service unavailable, Client host [xxx.xxx.xx.xxx] blocked using Spamhaus. To request removal from this list see https://www.spamhaus.org/query/ip/xxx.xxx.xx.xxx (ASXXXX). [Name=Protocol Filter Agent][AGT=PFA][MxId=11BA4226D003BECF] [CO1PEPF000044F6.namprd21.prod.outlook.com 2024-12-23T05:22:17.053Z 08DD21136A4618D7] (in reply to MAIL FROM command))

logwatchのpostfixでこれが検出できるようにすればいいかと雑な対応を実施した。

/etc/logwatch/scripts/services/postfixの「Main processing loop」の最初のあたりで、本来はテンプレートにない珍しいログを出力するためのunmatchedとして「blocked using」が含まれる行を送り込めばいいや、という判断です

# diff -u postfix.20241202.sourceforge postfix
--- postfix.20241202.sourceforge        2024-12-26 16:39:56.259000000 +0900
+++ postfix     2024-12-26 17:23:14.236000000 +0900
@@ -2829,6 +2829,13 @@
    # ignore tlsproxy for now
    if ($service_name eq 'tlsproxy')        { next; }                             # postfix/tlsproxy

+   ### 2024/12/26 start
+   if ($p1 =~/blocked using/){
+       inc_unmatched('final')   if ! in_ignore_list ($p1);
+       #return;
+   }
+   ### 2024/12/26 end
+
    my ($helo, $relay, $from, $origto, $to, $domain, $status,
        $type, $reason, $reason2, $filter, $site, $cmd, $qid,
        $rej_type, $reject_name, $host, $hostip, $dsn, $reply, $fmthost, $bytes);
#

とりあえず、これで検出できるようにはなりました。

なお修正後の試験は該当するログがある日付を指定する形で「logwatch –range “2024/12/23” –service postfix」を実行しました。

CVE-2022-38023対応後のsamba ADサーバに古いONTAPを参加させる

2023年7月のCVE-2022-38023関連対応後、古いONTAPシミュレーターは sambaで作ったActive Directory環境に参加できなくなった。

samba側の設定を変更し、セキュリティ的に問題がある接続でも受け付けるようにすればいいのかな、と試してみた。

sambaのCVE-2022-38023対応に関して書かれている「RC4/HMAC-MD5 NetLogon Secure Channel is weak and should be avoided」に、これまでのdefaultから変更した点がかかれているので、これの逆をやればいいのか、と以下を設定した。

[global]
        <略>
        allow nt4 crypto = yes
        reject md5 clients = no
        server reject md5 schannel = no
        server schannel = yes
        server schannel require seal = no
 <略>

拒否しない(rejectをno)のと、必須を解除(requireをno)にすればいいか、というレベルでの対応となる。

ドキュメントの「Cryptographic configuration」を見た感じだとこれで良さそう。

もちろんこれは過去のバージョンを動かす必要があって行うものであり、本来の運用で使用するものではない設定となる。

この設定を行い、sambaの再起動

NetAppのCIFS稼働のSVMでは、vserver cifs securityの項目にて「-smb2-enabled-for-dc-connections true」と「-is-aes-encryption-enabled true」の設定を行っている


エラーメッセージコレクション

ONTAP 9.1 シミュレーター(パッチ無し)

このバージョンではオプションの -smb2-enabled-for-dc-connections と -is-aes-encryption-enabled が存在していないので、エラー内容が結構違う。

ontap91::> vserver cifs create -cifs-server svm91 -domain ADOSAKANA.LOCAL

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Warning: An account by this name already exists in Active Directory at
         CN=SVM91,CN=Computers,DC=adosakana,DC=local.
         If there is an existing DNS entry for the name SVM91, it must be
         removed. Data ONTAP cannot remove such an entry.
         Use an external tool to remove it after this command completes.
         Ok to reuse this account? {y|n}: y

Error: command failed: Failed to create CIFS server SVM91. Reason:
       create_with_lug: RPC: Unable to receive; errno = Connection reset by
       peer; netid=tcp fd=17 TO=600.0s TT=0.119s O=224b I=0b CN=113/3 VSID=-3
       127.0.0.1:766.

ontap91::>

ONTAP 9.1P22 シミュレーター

ontap91::> vserver cifs create -cifs-server svm91 -domain ADOSAKANA.LOCAL

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    56] Loaded the preliminary configuration.
  [    92] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   107] Successfully connected to ip 172.17.44.49, port 389 using
           TCP
  [   110] Unable to start TLS: Connect error
  [   110]   Additional info:
  [   110] Unable to connect to LDAP (Active Directory) service on
           sambaad.ADOSAKANA.LOCAL
**[   110] FAILURE: Unable to make a connection (LDAP (Active
**         Directory):ADOSAKANA.LOCAL), result: 7652

Error: command failed: Failed to create the Active Directory machine account
       "SVM91". Reason: LDAP Error: Cannot establish a connection to the
       server.

ontap91::>
ontap91::> vserver cifs create -cifs-server svm91 -domain ADOSAKANA.LOCAL

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    61] Loaded the preliminary configuration.
  [    99] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   168] Successfully connected to ip 172.17.44.49, port 389 using
           TCP
  [   168] Entry for host-address: 172.17.44.49 not found in the
           current source: FILES. Ignoring and trying next available
           source
  [   172] Source: DNS unavailable. Entry for
           host-address:172.17.44.49 not found in any of the
           available sources
**[   181] FAILURE: Unable to SASL bind to LDAP server using GSSAPI:
**         Local error
  [   181] Additional info: SASL(-1): generic failure: GSSAPI Error:
           Unspecified GSS failure.  Minor code may provide more
           information (Cannot determine realm for numeric host
           address)
  [   181] Unable to connect to LDAP (Active Directory) service on
           sambaad.ADOSAKANA.LOCAL (Error: Local error)
  [   181] Unable to make a connection (LDAP (Active
           Directory):ADOSAKANA.LOCAL), result: 7643

Error: command failed: Failed to create the Active Directory machine account
       "SVM91". Reason: LDAP Error: Local error occurred.

ontap91::>
ontap91::> vserver cifs create -cifs-server svm91 -domain ADOSAKANA.LOCAL

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Warning: An account by this name already exists in Active Directory at
         CN=SVM91,CN=Computers,DC=adosakana,DC=local.
         If there is an existing DNS entry for the name SVM91, it must be
         removed. Data ONTAP cannot remove such an entry.
         Use an external tool to remove it after this command completes.
         Ok to reuse this account? {y|n}: y

Error: Machine account creation procedure failed
  [    13] Loaded the preliminary configuration.
  [    92] Created a machine account in the domain
  [    93] SID to name translations of Domain Users and Admins
           completed successfully
  [   100] Modified account 'cn=SVM91,CN=Computers,dc=VM2,dc=ADOSAKANA
           dc=LOCAL'
  [   101] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   113] Successfully connected to ip 172.17.44.49, port 464 using
           TCP
  [   242] Kerberos password set for 'SVM91$@ADOSAKANA.LOCAL' succeeded
  [   242] Set initial account password
  [   277] Successfully connected to ip 172.17.44.49, port 445 using
           TCP
  [   312] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   346] Successfully authenticated with DC
           sambaad.ADOSAKANA.LOCAL
  [   366] Unable to connect to NetLogon service on
           sambaad.ADOSAKANA.LOCAL (Error:
           RESULT_ERROR_GENERAL_FAILURE)
**[   366] FAILURE: Unable to make a connection
**         (NetLogon:ADOSAKANA.LOCAL), result: 3
  [   366] Unable to make a NetLogon connection to
           sambaad.ADOSAKANA.LOCAL using the new machine account

Error: command failed: Failed to create the Active Directory machine account
       "SVM91". Reason: general failure.

ontap91::>