Postfix soll To:mydestination aus dem Web ablehnen, aber akzeptieren, wenn es lokal gesendet wird, und weiterhin To:virtual_mailbox_domains aus dem Web akzeptieren.

Postfix soll To:mydestination aus dem Web ablehnen, aber akzeptieren, wenn es lokal gesendet wird, und weiterhin To:virtual_mailbox_domains aus dem Web akzeptieren.

Ich habe fast mein perfektes Postfix-Setup (v3.3.1) auf CentOS8. Meine Ziele sind:

  • Erlauben Sie Diensten, E-Mails an Linux-Benutzer zu senden. (Crontab an Root)
  • Akzeptieren Sie keine öffentlichen E-Mails für Linux-Benutzer. ([email geschützt])
  • Legen Sie fest, welche Benutzer öffentliche E-Mails erhalten sollen, ohne Linux-Benutzer für sie zu erstellen.

Ich habe es geschafft, das oben genannte zu erreichen, aber ich weiß nicht, wie ich eine Nebenwirkung verhindern kann. Einiges von dem, was ich bisher getan habe:

myhostname = server.foobar.com
mydomain = foobar.com
myorigin = $myhostname
mydestination = $myhostname, localhost
mail_spool_directory = /var/spool/mail

virtual_transport = virtual
virtual_mailbox_domains = foobar.com
virtual_mailbox_base = /var/spool/email/

Dieses Bit weist Postfix an, dass bei jeder von einem Dienst an einen Benutzer gesendeten E-Mail $myhostname hinzugefügt wird ([email geschützt]) und es wird an die Standard-System-E-Mail in zugestellt /var/spool/mail.

Jede E-Mail, die an einen Linux-Benutzer in der Domäne gesendet wird als[email geschützt]wird als virtuelle Domäne behandelt, sucht nach einem virtuellen Benutzer und lehnt die E-Mail ab, wenn keiner vorhanden ist.

Wenn ich einen virtuellen Benutzer (wie etwa Webmaster) hinzufüge, werden alle an diesen Benutzer gesendeten E-Mails ([email geschützt]) akzeptiert und zugestellt wird, um /var/spool/email/...öffentliche E-Mails von System-E-Mails zu trennen.


Das Problem...

Wenn jemand schlau genug ist, eine E-Mail an den Hostnamen ([email geschützt]) aus dem Internet wird es akzeptiert und übermittelt /var/spool/mail. Ich weiß nicht, wie ich das blockieren kann.


Ich habe versucht, dies einzustellen, default_transport = error:Domain doesn't accept email.aber das hat das Verhalten nicht geändert. Die Dokumentation unterstützt diese Funktion nicht, aber ich habe sie in einem Forum erwähnt gesehen, also habe ich es ausprobiert.

Es ist mir nicht wichtig, Linux-Benutzer als user@$myhostname zu behalten, dies war einfach die einzige Möglichkeit, die ich finden konnte, um Linux-Benutzer von virtuellen Benutzern auf demselben Domänennamen zu trennen, um Spammer davon abzuhalten,[email geschützt],[email geschützt], usw.

Andere Konfigurationseinstellungen, falls wichtig:

html_directory = no
local_recipient_maps =
luser_relay = postmaster
mail_spool_directory = /var/spool/mail
meta_directory = /etc/postfix
mydestination = $myhostname, localhost
mydomain = foobar.com
myhostname = server.foobar.com
mynetworks_style = host
myorigin = $myhostname
relay_domains =
relayhost =
virtual_mailbox_base = /var/spool/email/
virtual_mailbox_domains = foobar.com
virtual_transport = virtual

Irgendwelche Ideen oder eine andere Möglichkeit, das zu erreichen?

Antwort1

Ich habe eine Lösung gefunden.

Behalten Sie die myorigin = $myhostnamein meiner Frage beschriebene Methode zur Trennung lokaler und virtueller Benutzer in derselben Domäne bei.

Im smtpd_recipient_restrictionsAbschnitt von main.cf, nachdem Sie das Verweisen auf eine Liste permit_mynetworkshinzugefügt haben . Ich habe verwendet , es sah ungefähr so ​​aus:check_recipient_accesshash:

# Don't include the "...", its just to show this is among other settings

smtpd_recipient_restrictions =
   ...
   permit_mynetworks
   check_recipient_access hash:/etc/postfix/block_mydomain
   ...

Erstellen Sie dann die Liste/Hash-Datei/etc/postfix/block_mydomain

hostname.domain.com     513 Invalid domain.

Speichern Sie die Datei und führen Sie sie aus, postmap block_mydomainum die *.db-Version zu erstellen.

Starten Sie dann Postfix neu systemctl restart postfixund das sollte erledigt sein.

Ich habe es getestet und kann mit dem Befehl sendmail lokal E-Mails an jeden Linux-Benutzer senden. Crontab kann E-Mails an lokale Linux-Benutzer senden. Aber wenn Sie eine E-Mail aus dem Internet senden, [email protected]wird sie zurückgewiesen. Und falls Sie sich fragen,[email geschützt]wird immer noch akzeptiert und verworfen.

verwandte Informationen