내 메일 서버에서 무단 메일이 전송되는 것을 방지하는 방법은 무엇입니까?

내 메일 서버에서 무단 메일이 전송되는 것을 방지하는 방법은 무엇입니까?

SPF, DMARC, DKIM이 올바르게 설정되고 여러 번 테스트된 여러 도메인 이름을 제공하는 Postfix 서버가 있습니다. 따라서 스푸핑이 발생하지 않습니다. 그러나 Postfix 구성을 조정하려는 모든 노력에도 불구하고 아래와 같은 나가는 스팸 메시지가 정기적으로 서버를 통과합니다.

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)

다음은 관련될 수 있는 몇 가지 Postfix 설정입니다.

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

모든 합법적인 이메일 계정이 나열되어 /etc/postfix/virtual있으며 이상적으로는 해당 계정만 보낼 수 있고 다른 사람은 보낼 수 없어야 합니다. 또한 해당 도메인이 실제로 호스팅되는 모든 IP 주소를 추가했으므로 mynetworks =설정을 통해 이 메일 서버를 통해 메일을 보낼 수 있어야 합니다.

그래서 내가 넣으면 :

smtpd_relay_restrictions = permit_mynetworks, reject

그러면 스팸이 효과적으로 방지됩니다. 그러나 이 경우 합법적인 사용자는 휴대폰과 같은 이메일 클라이언트 프로그램에서 자신의 메일 계정에 연결할 수 없습니다. 따라서 위의 규칙을 다음과 같이 약간 완화해야 합니다.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

합법적인 사용자가 이 메일 서버를 사용할 수 있도록 허용하는 동시에 다른 모든 당사자가 이 메일 서버에서 어떤 것도 보내는 것을 방지하는 방법에 대한 올바른 지침을 줄 수 있는 사람이 있습니까?

편집 #1:

anx' 포인터 덕분에 추가 단계를 수행했으며 여기에 postcat -vq 3825218E12명령으로 추출된 메타데이터가 있습니다. 메시지 ID는 다르지만 문제는 동일합니다.

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:

나는 다음과 같은 특정 줄이 걱정됩니다.

named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root

다음을 사용하여 루트의 비밀번호를 변경했습니다.

saslpasswd2 root

그러나 위 코드를 어떻게 해석해야 하는지, 정확히 어떻게 루트로 로그인할 수 있었는지 잘 모르겠습니다. 메일 서버가 새로 구성되었고 root이전에 sasl 사용자를 건드린 적이 없습니다. 그래서 기본 비밀번호가 제공되는지, 항상 변경해야 하는지 궁금합니다. 또한 문제를 해결하는 데 충분한 조치를 취했는지, 아니면 추가로 권장되는 조치가 있는지 궁금합니다.

편집 #2:

postconf -n명령 의 출력은 다음과 같습니다 .

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

그리고 다음의 출력은 다음과 같습니다 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

답변1

서버가 이 메시지를 전달하려는 이유는 아직 게시한 내용으로는 명확하지 않지만 다음 단계는 다음과 같습니다.

이 메시지가 어디서 왔는지 찾아보세요.16진수 코드( BC96418C10)는대기열 ID누가 이 메시지를 서버에 제출했는지 확인하기 위해 로그에서 찾아야 하는 키워드입니다. 또한 postcat메시지 및 관련 메타데이터를 표시하려면 을 사용해야 합니다 .

두 가지 모두 이 메시지가 서버에 도달한 시기와 방법, 악의적인 사용자가 있는지, 사용자 자격 증명이 손상되었는지, 제한 세트에 구멍이 있는지 또는 서버가 모두 손상되었는지를 명확히 하는 데 도움이 됩니다.


이제 귀하의 업데이트에 관해: root메일 시스템 인증을 위한 약간 이상한 사용자 이름입니다. 그러나 아무도 그것을 건드리지 않는다면, 그것은 이 메시지를 서버에 제출하는 데 사용되는 SASL 자격 증명입니다.

named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root

postconf -npostfix 구성(try 및 ) 을 살펴보면 postconf -M어떤 프로그램이 해당 로그인을 허용했는지(cyrus? dovecot?) 그리고 해당 사용자를 비활성화할 위치를 더 명확하게 알 수 있습니다. sasl 사용자 데이터베이스에 대한 정보를 수집하고 해당 부분을 파악하는 데 관련된 새로운 질문과 문제를 게시하고 싶을 수도 있습니다.

root시스템 사용자가 실제로 비밀번호를 가지고 있고 메일을 보내는 데 사용된 경우 ..서버에 로그인하는 데 사용됨. 많은 시스템에서 사용자도 마찬가지입니다.root 가지다비밀번호 설정이 필요하며 비밀번호가 원격 셸을 얻는 유효한 메커니즘이 되어서도 안 되므로 이러한 손상이 메일로 제한될 가능성이 있습니다.

관련 정보