From 3b22086cc355246d19a81aa4e5740d820071eec2 Mon Sep 17 00:00:00 2001 From: Zhang Huangbin Date: Fri, 4 Jun 2021 12:32:51 +0800 Subject: [PATCH] Bypass Amazon EC2 HELO hostnames. Detect old service before adding missing ones while updating LDAP data for Dovecot 2.3. fixes #121 --- samples/postfix/helo_access.pcre | 1 + update/ldap/update-ldap-dovecot-2.3.py | 22 ++++++++-------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/samples/postfix/helo_access.pcre b/samples/postfix/helo_access.pcre index 46793cd0..77e02e3d 100644 --- a/samples/postfix/helo_access.pcre +++ b/samples/postfix/helo_access.pcre @@ -106,6 +106,7 @@ /^\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}\.mail-(mail|campmail)\.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 # reject HELO which contains IP address diff --git a/update/ldap/update-ldap-dovecot-2.3.py b/update/ldap/update-ldap-dovecot-2.3.py index cc779884..4936f5ab 100644 --- a/update/ldap/update-ldap-dovecot-2.3.py +++ b/update/ldap/update-ldap-dovecot-2.3.py @@ -40,21 +40,15 @@ for (dn, entry) in allUsers: enabledService = entry['enabledService'] _update = False - if b'imaptls' not in enabledService: - enabledService += [b'imaptls'] - _update = True - if b'pop3tls' not in enabledService: - enabledService += [b'pop3tls'] - _update = True - - if b'smtptls' not in enabledService: - enabledService += [b'smtptls'] - _update = True - - if b'sievetls' not in enabledService: - enabledService += [b'sievetls'] - _update = True + # If old service is disabled for the user, then no need to add the new one. + for old, new in [(b'imapsecured', b'imaptls'), + (b'pop3secured', b'pop3tls'), + (b'smtpsecured', b'smtptls'), + (b'sievesecured', b'sievetls')]: + if (old in enabledService) and (new not in enabledService): + enabledService.append(new) + _update = True if _update: print("* ({} of {}) Updating user: {}".format(count, total, mail))