Erweiterung von UCS-Config Templates

Bei der Integration unseres Produktes in den Mailstack von UCS müssen wir einen MILTER-Daemon an Postfix anbinden.
Dieses kann nur auf Basis einer zusätzlichen Template-Datei im Template-Set für Postfix erfolgen.

Die übliche Umsetzung dieser Konfiguration hängt zwei zusätzliche Zeilen an die main.cf von Postfix an.

Bei dieser Konfiguration werden allerdings alle smtpd(8postfix) Dienste, die vom Postfix master-Prozess gestartet wurden, beeinflußt. Neben den smtpd-Prozessen für eingehende E-Mail werden auch die Prozesse konfiguriert, über die Amavis mit Postfix gekoppelt wird. Dieses hat zur Folge, dass jede E-Mail den Milter zweimal durchläuft.

Dieses Verhalten kann nur vermieden werden, wenn die Konfiguration des MILTERs in der master.cf von Postfix vorgenommen wird.
Leider ist diese Vorgehensweise mit den derzeit von UCS implementierten Templates der master.cf nicht möglich.

Die aus unserer Sicht einzige Möglichkeit erfordert eine Erweiteurng der Template-Datei /etc/univention/templates/files/etc/postfix/master.cf.d/10_services :

$ diff -u 10_services 10_services.benno 
--- 10_services_ORG     2015-03-12 10:04:42.315133281 +0100
+++ 10_services     2015-03-12 14:09:49.926892120 +0100
@@ -8,6 +8,10 @@
 smtp = '%s      inet  n       -       n       -       -       smtpd' % configRegistry.get('mail/smtpport', '25')
 if configRegistry.is_true("mail/postfix/smtpd/debug", False):
        smtp += " -v"
+PREFIX='mail/postfix/smtpd/options'
+for key, value in configRegistry.items():
+       if key.startswith(PREFIX) and key != PREFIX:
+               smtp += ' -o %s=%s' % (key.split('/')[-1], configRegistry[key])
 print smtp
 @!@
 #628      inet  n       -       n       -       -       qmqpd
@@ -30,6 +34,10 @@
 ssmtp = "465       inet  n       -       n       -       -       smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes"
 if configRegistry.is_true("mail/postfix/smtpd/debug", False):
        ssmtp += " -v"
+PREFIX='mail/postfix/smtpd/options'
+for key, value in configRegistry.items():
+       if key.startswith(PREFIX) and key != PREFIX:
+               ssmtp += ' -o %s=%s' % (key.split('/')[-1], configRegistry[key])
 print ssmtp
 @!@
 #587      inet  n       -       n       -       -       smtpd -v -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes

Die zusätzlichen Parameter für die Konfiguration von Postfix können dann wie folgt gesetzt werden:

ucr set mail/postfix/smtpd/options/smtpd_milters='unix:/var/spool/postfix/benno-milter/benno-milter.sock' 
ucr set mail/postfix/smtpd/options/milter_default_action='tempfail'

Viele Grüße,
Martin Werthmöller

Hallo Herr Werthmöller,

vielen Dank für den Patch. Ich habe [bug]38049[/bug] aufgemacht, auch wir sehen keinen anderen Weg, das anderweitig zu lösen.

Wir werden ihn für UCS 4.0 als Erratum veröffentlichen. Vielleicht müssen wir noch Vorkehrungen treffen, dass das univention-mail-postfix-Paket dann auch das aktuelle ist. Sie können so aber schon damit planen, es ist höchstens mit geringfügigen Anpassungen zu rechnen.

Viele Grüße
Dirk Wiesenthal

Hallo Herr Wiesenthal,

Sehr schön. Die Erweiterung des Temlates um die UCR Variablen “mail/postfix/mastercf/options/smtp” und
“mail/postfix/mastercf/options/smtps” hilft uns weiter.

Vielen Dank!
Martin Werthmöller

Mastodon