Florian Kieling wrote:
Hallo Sandy
ich habe mir einen Kolab2-Server installiert. der läuft soweit auch ganz prächtig. Er stellt brav alle eMails die an meine Domain gehen an die jeweiligen lokalen User zu. Alle anderen eMails werden über den in der main.cf definierten Relayhost weitergeleitet. Dabei erfolgt die
Authentifizierung über einen Eintrag in der sasl_passwd. Nun gibt es aber ein paar User, die auf dem Kolab2-Server keinen Account haben. Die eMails, die ich an diese User schreibe, sollen ebenfalls an den Relayhost weitergeleitet werden. Dafür habe ich einen Eintrag in der virtual gemacht: @domain.tdl external Catch-all würde ich, wenn irgendwie möglich, vermeiden. Unvollständige Adressen in virtual ebenfalls. Bitte beachte, dass dieser Eintrag in virtual für alle mails gilt, eingehende wie ausgehende. Ok. Hab ich im Hinterkopg vermerkt.
Catchalls zerstören zusätzlich auch noch die Empfängervalidierung, deshalb werden sie auch gerne "Spammagneten" genannt. (^-^) Die saubere Methode ist, für jeden gültigen Empfänger eine Zeile einzutragen.
Besser wäre die Ausgabe von "postconf -n" (anonymisiere meinetwegen, aber konsistent und übereinstimmend auch im Log) und die Logzeilen, wo die Mail durchläuft.
Hier zuerst die Ausgabe von postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes canonical_maps = hash:/etc/postfix/canonical command_directory = /usr/sbin config_directory = /etc/postfix content_filter = kolabfilter daemon_directory = /usr/lib/postfix default_privs = kolab local_recipient_maps = $virtual_maps, $alias_maps
Da muss ich jedesmal mein Gehirn verbiegen, wenn ich eine KOLAB-Konfig sehe. Aber immerhin funktioniert sie einigermaßen.
mail_owner = postfix mailbox_transport = kolabmailboxfilter masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient masquerade_domains = $mydomain message_size_limit = 20971520 mydestination = familie-kieling.de mydomain = familie-kieling.de myhostname = kolab2.intern
Sendet der Server direkt ins Internet? Dann würde er nämlich "kolab2.intern" als HELO verwenden. Das würde von vielen Servern abgewiesen.
mynetworks = 127.0.0.0/8 myorigin = $mydomain queue_directory = /var/spool/postfix recipient_delimiter = + relay_domains = relayhost = [mail.familie-kieling.de]
Okay, also über Relay. Dann ist der Hostname nicht wichtig.
relocated_maps = hash:/etc/postfix/relocated setgid_group = maildrop smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination, reject_unlisted_recipient, check_policy_service unix:private/kolabpolicy
Empfängst du Mails direkt aus dem Internet oder pollst du diese über Fetchmail? Im ersten Fall könntest du noch einiges an Spamschutz einbauen.
smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous smtpd_sender_restrictions = permit_mynetworks, check_policy_service unix:private/kolabpolicy smtpd_starttls_timeout = 300s smtpd_timeout = 300s smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/kolab/cert.pem smtpd_tls_key_file = /etc/kolab/key.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = no smtpd_tls_session_cache_timeout = 3600s smtpd_use_tls = yes tls_random_source = dev:/dev/urandom transport_maps = hash:/etc/postfix/transport, ldap:/etc/postfix/ldaptransport.cf
Und hier ist der Auszug aus /var/log/mail, der während des versendens einer entsprechenden Nachricht entsteht: [...] Feb 12 18:25:12 kolab2 postfix/pipe[3553]: 4895C94389: to=
, orig_to= , relay=kolabfilter, delay=4, status=sent (kolab2.intern)
Okay, hier hat der Catch-all in virtual zugeschlagen.
Feb 12 18:25:20 kolab2 postfix/smtp[3562]: 5F3B694389: to=
, relay=mail.familie-kieling.de[217.160.220.47], delay=1, status=sent (250 ok 1171304498 qp 30578)
Und das Verschicken an den Relayhost ist dann logisch.
Gut. Hiermit ist mir klar, was passiert: Feb 12 18:25:19 kolab2 postfix/smtp[3557]: 8D9E49438D: to=
, relay=127.0.0.1[127.0.0.1], delay=7, status=sent (250 2.6.0 Ok, id=02839-01, from MTA([127.0.0.1]:10026): 250 Ok: queued as 5F3B694389) Ich hab auf dem Relayhost nen catchall eingerichtet. Und da eine eMail external@ nicht existiert, wird's natürlich beim cathcall eingeliefert. Soweit hab ich's jetzt verstanden.
Wie kann ich nun erreichen, daß die eMail im Beispiel trotzdem an info@ gemailt wird?
Das Stichwort hier ist "Identity Mapping". Du musst einen Eintrag auf sich selbst setzen in virtual. die Alias-Auflösung stoppt dann, wenn ein Eintrag auf sich selbst zeigt. /etc/postfix/virtual: info@familie-kieling.de info@familie-kieling.de @familie-kieling.de external@familie-kieling.de Ich würde dir aber trotzdem raten, für jeden gültigen Empfänger eine eigene Zeile einzurichten. Catch-all sind beinahe magische Spammagneten. In der letzten Woche hatte ich etwa 3500 rejects auf meinem kleinen Server hier. Ein Catch-all hätte mir schon bei dem Spamaufkommen das Postfach geflutet. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org