Ich habe einen Postfix-Server, der mehrere Domänennamen mit korrekt eingestellten und vielfach getesteten SPF-, DMARC- und DKIM-Einstellungen bedient. Es findet also kein Spoofing statt. Trotz all meiner Bemühungen, die Postfix-Konfiguration zu optimieren, schlüpfen jedoch regelmäßig ausgehende Spam-Nachrichten wie die folgenden durch den Server:
Aug 5 08:37:38 mail postfix/error[9631]: BC96418C10: to=<[email protected]>, relay=none, delay=161913, delays=161238/676/0/0.04, dsn=4.4.2, status=deferred (delivery temporarily suspended: conversation with mx1.comcast.net[96.114.157.80] timed out while receiving the initial server greeting)
Aug 5 10:07:45 mail postfix/error[31924]: BC96418C10: to=<[email protected]>, relay=none, delay=167320, delays=166039/1281/0/0.04, dsn=4.4.3, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=comcast.net type=MX: Host not found, try again)
Aug 5 11:23:43 mail postfix/error[18751]: BC96418C10: to=<[email protected]>, relay=none, delay=171878, delays=171438/440/0/0.12, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx2.comcast.net[2001:558:fe21:2a::6]:25: Network is unreachable)
Aug 5 12:54:11 mail postfix/error[8920]: BC96418C10: to=<[email protected]>, relay=none, delay=177306, delays=175938/1367/0/0.06, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx1.comcast.net[2001:558:fe16:1b::15]:25: Network is unreachable)
Aug 5 14:07:22 mail postfix/error[27186]: BC96418C10: to=<[email protected]>, relay=none, delay=181697, delays=181338/359/0/0.03, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx2.comcast.net[2001:558:fe21:2a::6]:25: Network is unreachable)
Hier sind einige Postfix-Einstellungen, die relevant sein könnten:
virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = encrypt
smtp_tls_security_level = may
mailbox_size_limit = 0
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_CAfile = /ssl/ssl.ca
smtpd_tls_cert_file = /ssl/ssl.crt
smtp_use_tls = yes
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 10
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_recipient_restrictions = permit_sasl_authenticated reject_unauth_destination check_policy_service unix:/var/spool/postfix/postgrey/socket permit_inet_interfaces
smtpd_sender_restrictions = reject_unknown_sender_domain,
check_sender_access hash:/etc/postfix/access
Alle legitimen E-Mail-Konten sind aufgelistet /etc/postfix/virtual
und im Idealfall sollten nur sie senden können und sonst niemand. Außerdem habe ich alle IP-Adressen hinzugefügt, unter denen diese Domänen tatsächlich gehostet werden und die daher mit dieser Einstellung E-Mails über diesen Mailserver senden können sollten mynetworks =
.
Wenn ich also eingebe:
smtpd_relay_restrictions = permit_mynetworks, reject
dann wird Spam effektiv verhindert. Allerdings können in diesem Fall legitime Benutzer von E-Mail-Client-Programmen wie Mobiltelefonen aus keine Verbindung zu ihren E-Mail-Konten herstellen. Daher muss ich die obige Regel etwas lockern:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
Kann mir jemand sagen, wie ich es legitimen Benutzern ermögliche, diesen Mailserver zu verwenden, und gleichzeitig alle anderen Parteien daran hindere, irgendetwas von diesem Mailserver zu senden?
BEARBEITEN #1:
Dank des Zeigers von anx habe ich weitere Schritte unternommen und hier sind die mit dem postcat -vq 3825218E12
Befehl extrahierten Metadaten. Die ID der Nachricht ist anders, aber das Problem ist dasselbe:
postcat: name_mask: all
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: inet_addr_local: configured 2 IPv6 addresses
*** ENVELOPE RECORDS deferred/3/3825218E12 ***
message_size: 8340 682 1 0 8340
message_arrival_time: Thu Aug 12 18:31:08 2021
create_time: Thu Aug 12 18:31:08 2021
named_attribute: log_ident=3825218E12
named_attribute: rewrite_context=remote
named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root
sender: [email protected]
named_attribute: log_client_name=unknown
named_attribute: log_client_address=93.122.252.5
named_attribute: log_client_port=8529
named_attribute: log_message_origin=unknown[93.122.252.5]
named_attribute: log_helo_name=213.233.88.90
named_attribute: log_protocol_name=ESMTP
named_attribute: client_name=unknown
named_attribute: reverse_client_name=unknown
named_attribute: client_address=93.122.252.5
named_attribute: client_port=8529
named_attribute: helo_name=213.233.88.90
named_attribute: protocol_name=ESMTP
named_attribute: client_address_type=2
named_attribute: dsn_orig_rcpt=rfc822;[email protected]
original_recipient: [email protected]
recipient: [email protected]
pointer_record: 0
*** MESSAGE CONTENTS deferred/3/3825218E12 ***
regular_text: Received: from 213.233.88.90 (unknown [93.122.252.5])
regular_text: by mail.mydomain.tld (Postfix) with ESMTPSA id 3825218E12
regular_text: for <[email protected]>; Thu, 12 Aug 2021 18:31:08 +0000 (UTC)
pointer_record: 9682
regular_text: DKIM-Filter: OpenDKIM Filter v2.11.0 mail.mydomain.tld 3825218E12
pointer_record: 9043
regular_text: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thebriefguy.com;
regular_text: s=default; t=1628793068;
regular_text: bh=2YMB5PSTO3RHAXFabkN43xdUCrxjEQOw0Xw/uLJ1zX8=;
regular_text: h=From:To:Subject:Date:From;
regular_text: b=edi8WNplYs2gx/aYmKl9vbY1OE3jfVZ284faDviyICbDTm51y5CgBXg3QzcSHuaL6
regular_text: PsxGqHaqqXnF32EsA0UnqQ2q71Z8DVeEnQVp1njnqA3ECE3hiWj8UUeobRClZw7eEP
regular_text: z2PK95dI6kfHlCcBnEgJph2pr5ilxDv4Brl9s02s7Q/2ikwHHGWh+8Gwr24CQfnBJK
regular_text: lXrkBZVgmi65/6b6kVxmto+3oqV9avsd/9ja+CcMRs7+CsKjeHz7GA/9P3yB24/fNT
regular_text: sAjWFvQA14zkcEjFpPmZFm/6ZjLkf0pi53vx+JamwdB5C4KzhDSKkgX6rXNYYwMu+o
regular_text: jcADLvrnBCDtQ==
regular_text: Message-ID: <[email protected]>
pointer_record: 936
regular_text: From: Xfinity <[email protected]>
regular_text: To: [email protected]
regular_text: Subject: Important Update
regular_text: Date: Thu, 12 Aug 2021 11:31:06 -0700
regular_text: Organization: Xfinity
regular_text: MIME-Version: 1.0
regular_text: Content-Type: text/html; charset="utf-8"
regular_text: Content-Transfer-Encoding: quoted-printable
pointer_record: 0
regular_text:
Diese Zeilen bereiten mir besonders Sorgen:
named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root
Ich habe das Root-Passwort wie folgt geändert:
saslpasswd2 root
Ich bin mir jedoch nicht sicher, wie ich den obigen Code interpretieren soll und wie genau sie sich als Root anmelden konnten. Der Mailserver wurde neu konfiguriert und ich habe den SASL-Benutzer noch nie root
zuvor berührt. Daher frage ich mich, ob er mit einer Art Standardkennwort geliefert wird und ob es immer geändert werden muss. Außerdem frage ich mich, ob dieser Schritt ausreicht, um das Problem zu lösen, oder ob weitere zusätzliche Schritte empfohlen werden?
BEARBEITEN #2:
Hier ist die Ausgabe des postconf -n
Befehls:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_destination_concurrency_limit = 1
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
initial_destination_concurrency = 1
mail_owner = postfix
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
milter_default_action = accept
mydestination = mail.mydomain.tld, mail, localhost
mydomain = mydomain.tld
myhostname = mail.mydomain.tld
mynetworks = REDACTED IP ADDRESS BLOCKS
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = inet:localhost:8891
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sender_bcc_maps = hash:/etc/postfix/bcc
sender_dependent_default_transport_maps = hash:/etc/postfix/dependent
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtp_use_tls = yes
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname check_helo_access hash:/etc/postfix/helo_access
smtpd_milters = inet:localhost:8891
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_non_fqdn_hostname reject_non_fqdn_sender reject_non_fqdn_recipient reject_unauth_destination reject_unauth_pipelining reject_invalid_hostname reject_unknown_reverse_client_hostname reject_rbl_client bl.spamcop.net reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org reject_rbl_client zen.spamhaus.org permit_dnswl_client swl.spamhaus.org
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_rbl_client sbl.spamhaus.org permit
smtpd_sasl_auth_enable = yes
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_sender_domain, check_sender_access hash:/etc/postfix/access reject_unknown_reverse_client_hostname reject_unknown_client_hostname
smtpd_soft_error_limit = 5
smtpd_tls_CAfile = /ssl/ssl.ca
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /ssl/ssl.crt
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_security_level = encrypt
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
Und hier ist die Ausgabe von postconf -M
:
smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may -o smtpd_tls_wrappermode=yes
Antwort1
Der Grund, warum Ihr Server versucht, diese Nachricht weiterzuleiten, geht aus Ihren bisherigen Beiträgen nicht hervor, aber Ihr nächster Schritt sollte sein:
Finden Sie heraus, woher diese Nachricht kam.Dieser Hexadezimalcode ( BC96418C10
), bekannt alsWarteschlangen-IDist das Schlüsselwort, nach dem Sie in Ihren Protokollen suchen müssen, um zu sehen, wer diese Nachricht an Ihren Server gesendet hat. Sie sollten auch verwenden, postcat
um die Nachricht und die zugehörigen Metadaten anzuzeigen.
Beides sollte dabei helfen, zu klären, wann und wie diese Nachricht Ihren Server erreicht hat und ob es sich um einen missbräuchlichen Benutzer, kompromittierte Benutzeranmeldeinformationen, eine Lücke in Ihren Beschränkungssätzen oder einen insgesamt kompromittierten Server handelt.
Nun zu Ihrem Update: root
Dies ist ein etwas seltsamer Benutzername für die Authentifizierung bei einem Mailsystem. Aber falls niemand damit herumgespielt hat, sind dies die SASL-Anmeldeinformationen, die zum Senden dieser Nachricht an Ihren Server verwendet wurden.
named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root
Wenn Sie sich Ihre Postfix-Konfiguration ansehen (versuchen Sie es mit postconf -n
und postconf -M
), wird wahrscheinlich klarer, welches Programm diese Anmeldung akzeptiert hat (Cyrus? Dovecot?) und wo Sie nachsehen müssen, um diesen Benutzer zu deaktivieren. Sie möchten wahrscheinlich Informationen zu Ihrer SASL-Benutzerdatenbank sammeln und eine neue Frage zu den Problemen beim Herausfinden dieses Teils posten.
Wenn der root
Benutzer des Systems tatsächlich ein Passwort hat und es zum Senden von E-Mails verwendet wurde, kann es auchwird zum Anmelden am Server verwendet. Auf vielen Systemen würde der Benutzer wederroot
habenEs handelt sich nicht um ein Passwort-Setup, noch sollten Passwörter ein gültiger Mechanismus zum Erhalten einer Remote-Shell sein, daher besteht die Möglichkeit, dass dieser Kompromiss auf E-Mails beschränkt ist.