Eingehende E-Mails ablehnen, die Ihre eigene Domain als Absender verwenden

7

Es wäre schön, eingehende E-Mails abzulehnen, die eine meiner virtuellen Domänen als Absenderadresse verwenden, ohne ein legitimer Benutzer von mir zu sein.

Ich weiß, dass ich eingehende E-Mails ablehnen kann, die einen vorhandenen smtpd_sender_restrictions=reject_sender_login_mismatchAlias- / Kontonamen verwenden. Dies ermöglicht es Angreifern jedoch weiterhin, eine nicht vorhandene E-Mail-Adresse mit einer meiner virtuellen Domänen zu verwenden. (Was in Bezug auf die Spam-Erkennung bevorzugt wird).

Was ist der beste Weg, um eingehende E-Mails abzulehnen, die eine meiner virtuellen Domänen verwenden und dafür nicht authentifiziert sind?

SPF und DKIM sind eingerichtet, aber aufgrund von Problemen mit Mailinglisten und Weiterleitungen für SoftFail konfiguriert. Ich suche nicht nach SPF oder DKIM, sondern nach einer Lösung für den Postfix-Server, der der MX der oben genannten Domänen ist.

Zulakis
quelle
Verwenden von reject_sender_login_mismatchund reject_unlisted_sender?
Masegaloeh
Versuchen Sie es mit smtpd_sender_restrictions, zuerst allow_mynetwork und allow_sasl_authenticated, und verwenden Sie dann eine pcre: / etc / postfix / sender_access-Datei, in der Sie versuchen können, /@my\.domain$/ REJECT
Dan
@ Schauen Sie sich die zweite Methode an, die ich aufgelistet habe. Sie ist sehr ähnlich zu dem, was Sie vorgeschlagen haben.
Zulakis
@masegaloeh Kannst du erklären? Mann Postconf war nicht wirklich klar, was Reject_unlisted_sender macht, es schien mir, dass es alle unbekannten Absender ablehnt? ( postfix.org/postconf.5.html#reject_unlisted_sender ) Vielleicht ist es ein besserer Weg, dies zu tun als das, was ich getan habe.
Zulakis
1
Nein . Postfix nur ablehnen, wenn (1) Absenderdomäne in virtual_mailbox_domainsund (2) Absenderadresse nicht in virtual_mailbox_mapsund so weiter aufgeführt sind. Siehe postfix.org/postconf.5.html#smtpd_reject_unlisted_sender
masegaloeh

Antworten:

10

Ich habe zwei mögliche Methoden gefunden, aber vielleicht gibt es einen besseren Weg.

1. Methode:

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit

Jetzt habe ich meine geändert smtpd_sender_login_maps, um einen Eintrag zurückzugeben, adminob die Domäne in der Domänentabelle vorhanden ist. Auf diese Weise wird ein Datensatz zurückgegeben, auch wenn die E-Mail-Adresse nicht als Maibox / Alias ​​vorhanden ist, jedoch nicht, wenn eine fremde Domain die Absenderadresse ist.

table = domain
query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND deleted_at IS NULL \
UNION SELECT goto FROM alias WHERE address="%s" AND active = 1 \
UNION select 'admin' from domain where domain = '%d'

2. Methode:

Dieser Ansatz verwendet eine check_sender_accessSuche, die eine Ablehnungsaktion zurückgibt, wenn es sich bei der Domäne um eine virtuelle Domäne handelt und der Benutzer nicht sasl_authenticated.

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    check_sender_access proxy:mysql:$config_directory/mysql_reject_virtual_domains.cf,
    permit

mysql_reject_virtual_domains.cf::

table = domain
query = select 'Reject 530 SMTP authentication is required' from domain where domain = '%d'

3. Methode (danke an masegaloeh ):

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated
    reject_unlisted_sender,
    permit

Ich weiß nicht, wie viele CPU-Lade- / SQL-Abfragen Ablehnung_unlisted_sender generiert, da es ziemlich viele Dinge überprüft:


Fordern Sie den Postfix SMTP-Server auf, E-Mails von unbekannten Absenderadressen abzulehnen, auch wenn keine explizite reject_unlisted_senderZugriffsbeschränkung angegeben ist. Dies kann eine Explosion gefälschter E-Mails von Würmern oder Viren verlangsamen.

Eine Adresse wird immer dann als "bekannt" betrachtet, wenn sie einem virtuellen (5) Alias ​​oder einer kanonischen (5) Zuordnung entspricht.

  • Die Absenderdomäne entspricht $ mydestination, $ inet_interfaces oder $ proxy_interfaces, aber der Absender ist nicht in $ local_recipient_maps aufgeführt, und $ local_recipient_maps ist nicht null.
  • Die Absenderdomäne stimmt mit $ virtual_alias_domains überein, der Absender ist jedoch nicht in $ virtual_alias_maps aufgeführt.
  • Die Absenderdomäne stimmt mit $ virtual_mailbox_domains überein, aber der Absender ist nicht in $ virtual_mailbox_maps aufgeführt, und $ virtual_mailbox_maps ist nicht null.
  • Die Absenderdomäne stimmt mit $ Relay_Domains überein, aber der Absender ist nicht in $ Relay_recipient_maps aufgeführt, und $ Relay_recipient_maps ist nicht null.

Zulakis
quelle
1

Der richtige Weg ist, SPF für Ihre Domain einzurichten und SPF im MTA zu aktivieren. Dann erhalten Sie Schutz nicht nur für das Schmieden Ihrer eigenen Domain, sondern auch für alle anderen Domains, für die SPF aktiviert ist.

Kondybas
quelle
3
Bitte werfen Sie einen Blick auf meinen Hinweis zu SPF / DKIM in der Frage.
Zulakis
1

Sie sollten versuchen, mindestens eine der folgenden Optionen zu implementieren (beides ist besser):

Alexus
quelle
3
Bitte werfen Sie einen Blick auf meinen Hinweis zu SPF / DKIM in der Frage.
Zulakis
softfailDas ist so, als ob es nicht einmal aktiviert ist. Sie sollten versuchen, es durchzusetzen.
Alexus
2
@alexus Die SPF-Bewertung ist möglicherweise noch für die Spam-Erkennung relevant, nachdem die Nachricht akzeptiert wurde, wie dies bei Spamassin der Fall ist. Der Punkt ist, dass SPF nur für die eigene Domäne erzwungen werden sollte, wenn die Nachrichten nicht auf dem System angekommen sind und dennoch abgelehnt werden können.
Sebix
1

Noch eine erste Methode mit separater Abfrage ohne Gewerkschaften:

virtual_sender_mailbox_maps.cf

query = SELECT '%s' AS email FROM domains WHERE name='%d' AND active=TRUE

main.cf

smtpd_sender_login_maps = ${proxysql}virtual_sender_mailbox_maps.cf
smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit
Oleg Kr
quelle