[CentOS-de] Sendmail LDAP Routing Mailer-Auswahl
Alexander Dalloz
ad+lists at uni-x.org
So Sep 12 10:29:06 EDT 2010
Am 10.09.2010 10:06, schrieb Tilman Schmidt:
> Ein von mir aufgesetzter CentOS 5.5 Server mit sendmail-8.13.8-8.el5
> arbeitet als Mailrelay zur Spam- und Virenabwehr zwischen dem
> Mailrelay des Providers und dem internen Mailserver (Lotus Notes).
> Zur Erkennung ungültiger Empfängeradressen am Perimeter wird die
> Methode "LDAP Routing ohne LDAP" eingesetzt, also in sendmail.mc:
>
> FEATURE(`ldap_routing',
> `hash /etc/mail/mailhost', `hash /etc/mail/mailroute', `bounce')dnl
>
> und in /etc/mail/mailhost für jeden Empfänger ein Eintrag der Form:
>
> user at my.example.com notesserver.example.com
>
> Das funktioniert auch alles sehr gut. Nun wünscht allerdings der
> Provider, dass die Mail bei ihm zukünftig nicht mehr über Port 25,
> sondern über Port 587 eingeliefert wird. Die Standardlösung:
>
> define(`RELAY_MAILER_ARGS', `TCP $h 587')
>
> führt leider dazu, dass auch die Weiterleitung an den internen
> Mailserver auf Port 587 geht, was natürlich nicht funktioniert.
> In der Sendmail-Doku findet sich dazu der trockene Hinweis, man
> solle halt sicherstellen, dass der "relay"-Mailer nirgends anders
> verwendet wird.
>
> Offenbar verwendet also FEATURE(`ldap_routing') den Mailer "relay",
> und die Lösung meines Problems bestünde darin, das auf "esmtp"
> umzustellen.
>
> Frage: Wie mache ich das?
>
> Ich habe versucht, den Quellcode von FEATURE(`ldap_routing') zu
> lesen, muss aber gestehen, dass ich nicht verstehe, wie bzw. an
> welcher Stelle da der Mailer ausgewählt wird, geschweige denn,
> wie ich diese Wahl beeinflussen könnte.
>
> Schon mal danke für alle Tipps.
Die Lösung Deines Problems würde ich anders angehen.
Definiere einen neuen Mailer in /usr/share/sendmail-cf/mailer/smtp.m4.
Die Anpassungen könnten so aussehen
mailer $ diff -uNr smtp.m4 smtp2.m4
--- smtp.m4 2001-04-02 18:52:54.000000000 -0700
+++ smtp2.m4 2010-09-12 07:24:20.000000000 -0700
@@ -19,11 +19,13 @@
ifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `TCP $h')')
ifdef(`DSMTP_MAILER_ARGS',, `define(`DSMTP_MAILER_ARGS', `TCP $h')')
ifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `TCP $h')')
+ifdef(`RELAY_ISP_MAILER_ARGS',, `define(`RELAY_ISP_MAILER_ARGS', `TCP
$h 587')')
define(`_SMTP_QGRP', `ifelse(defn(`SMTP_MAILER_QGRP'),`',`', `
Q=SMTP_MAILER_QGRP,')')dnl
define(`_ESMTP_QGRP', `ifelse(defn(`ESMTP_MAILER_QGRP'),`',`', `
Q=ESMTP_MAILER_QGRP,')')dnl
define(`_SMTP8_QGRP', `ifelse(defn(`SMTP8_MAILER_QGRP'),`',`', `
Q=SMTP8_MAILER_QGRP,')')dnl
define(`_DSMTP_QGRP', `ifelse(defn(`DSMTP_MAILER_QGRP'),`',`', `
Q=DSMTP_MAILER_QGRP,')')dnl
define(`_RELAY_QGRP', `ifelse(defn(`RELAY_MAILER_QGRP'),`',`', `
Q=RELAY_MAILER_QGRP,')')dnl
+define(`_RELAY_ISP_QGRP', `ifelse(defn(`RELAY_ISP_MAILER_QGRP'),`',`',
` Q=RELAY_ISP_MAILER_QGRP,')')dnl
POPDIVERT
#####################################
### SMTP Mailer specification ###
@@ -120,3 +122,6 @@
Mrelay, P=[IPC],
F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a8', RELAY_MAILER_FLAGS),
`RELAY'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_',
`MasqSMTP/MasqRelay', `MasqSMTP'), E=\r\n, L=2040,
_OPTINS(`RELAY_MAILER_CHARSET', `C=', `,
')_OPTINS(`RELAY_MAILER_MAXMSGS', `m=', `,
')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,_RELAY_QGRP
A=RELAY_MAILER_ARGS
+Mrelay_isp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a8',
RELAY_ISP_MAILER_FLAGS), `RELAY'), S=EnvFromSMTP/HdrFromSMTP,
R=ifdef(`_ALL_MASQUERADE_', `MasqSMTP/MasqRelay', `MasqSMTP'), E=\r\n,
L=2040,
+ _OPTINS(`RELAY_ISP_MAILER_CHARSET', `C=', `,
')_OPTINS(`RELAY_ISP_MAILER_MAXMSGS', `m=', `,
')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,_RELAY_QGRP
+ A=RELAY_ISP_MAILER_ARGS
Dann ändere in der /etc/mail/sendmail.mc die Zeile
MAILER(smtp)dnl
auf z.B.
MAILER(smtp2)dnl
Und die Anweisung, Deinen ISP als Smarthost zu verwenden änderst Du nach
diesem Schema
define(`SMART_HOST',`relay_isp:smtp.your.provider')dnl
Den abweichenden Port 587 hatte ich schon in smtp2.m4 gesetzt. Das
kannst Du natürlich lassen und stattdessen wie gehabt
define(`RELAY_ISP_MAILER_ARGS', `TCP $h 587')dnl
definieren.
Vom Prinzip her sollten die Änderungen klar sein.
Gruß
Alexander