3 ܓiI@sZddlZddlmZmZmZmZGdddeZGdddeeZGdddeeeZdS) N)Plugin RedHatPlugin DebianPlugin UbuntuPluginc@s4eZdZdZdZd Zd ZddZddZd d Z d S)PostfixzPostfix smtp serverpostfixmailservicescCsddddddddd d d d d ddddg}g}yrt|jddddT}xL|jD]@}|jdr\qL|jd}|dj|krL|j|djdqLWWdQRXWntk rYnX|S)zi list of attributes defining a location of a SSL key file we must forbid from collection Zlmtp_tls_dkey_fileZlmtp_tls_eckey_fileZlmtp_tls_key_fileZsmtp_tls_dkey_fileZsmtp_tls_eckey_fileZsmtp_tls_key_fileZsmtpd_tls_dkey_fileZsmtpd_tls_eckey_fileZsmtpd_tls_key_fileZ"tls_legacy_public_key_fingerprintsZtlsproxy_tls_dkey_fileZtlsproxy_tls_eckey_fileZtlsproxy_tls_key_fileZsmtpd_tls_dh1024_param_fileZsmtpd_tls_dh512_param_fileZtlsproxy_tls_dh1024_param_fileZtlsproxy_tls_dh512_param_filez/etc/postfix/main.cfrzUTF-8)encoding#=rN)open path_join readlines startswithsplitstripappend Exception)selfforbid_attributesfpathscffilelineZwordsr/usr/lib/python3.6/postfix.pyforbidden_ssl_keys_filess<    (z Postfix.forbidden_ssl_keys_filesc Csd}g}d}tjd}yt|jddd d }x|jD]|}tjd d |}|j|}|d kr^q8|jdj}||kr8|jdj} t | dkrq8| j |r| t |d } |j | q8WWd QRXWn>t k r} z d| j d} |j| WYd d } ~ XnX|S)z% Get the list of password to exclude lmtp_sasl_password_mapssmtp_sasl_password_mapspostscreen_dnsbl_reply_mapsmtp_sasl_auth_cache_namezhash:z ^(.*)=(.*)z/etc/postfix/main.cfr zUTF-8)r z#.*NrrzError parsing main.cf: )rr r!r")recompilerrrsubmatchgrouprlenrrrargsZ _log_error) rrrprefixZ option_formatrrZoptionZ attributefilepatherrmsgrrrforbidden_password_files;s6      z Postfix.forbidden_password_filescCsJ|jdg|jddg|jdddg|j|j|j|jdS)Nz /etc/postfix/ZpostconfZmailqz/etc/postfix/*.keyz/etc/postfix/*.crtz/etc/postfix/ssl/) add_copy_specZadd_cmd_outputZadd_forbidden_pathrr0)rrrrsetupasz Postfix.setupN)rr )r) __name__ __module__ __qualname__Z short_descZ plugin_nameZprofilespackagesrr0r2rrrrr s&&rcs$eZdZdZdZfddZZS) RedHatPostfix/etc/rc.d/init.d/postfixrcstj|jddS)Nz /etc/mail)superr2r1)r) __class__rrr2xs zRedHatPostfix.setup)r8)r)r3r4r5filesr6r2 __classcell__rr)r:rr7ssr7c@seZdZdZdS) DebianPostfixrN)r)r3r4r5r6rrrrr=}sr=) r%Zsos.report.pluginsrrrrrr7r=rrrr sf