AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1121134
Accepted
Richard T
Richard T
Asked: 2023-01-26 11:43:13 +0800 CST2023-01-26 11:43:13 +0800 CST 2023-01-26 11:43:13 +0800 CST

长期安装的 postfix 已成为开放中继;我怎样才能弄清楚如何阻止它?

  • 772

这个服务器系统从那时起(我认为大约是 1997 年)就开始提供电子邮件服务Red Hat v 1.1,现在在 Fedora Core 37 上;通过沿途的许多硬件和操作系统更新,它一直保持最新状态。而且,我们很早就选择了postfix并且dovecot仍在使用它们。而我一直都是系统破坏者。

一周前的明天,/var由于备份脚本中的错误,我们的树被消灭了 - doah!并且它需要“从头开始”将操作系统完全重建为相同版本。Fedora Server 37所有未包含在发行版中的软件都是通过dnf install. 而且,我们从良好的备份中获得了完整的配置。

两天前的星期一,我注意到系统明显迟缓,但没有时间查看。我还注意到我们与互联网的链接似乎存在性能问题。那是一个线索...

然后,我决定spamassassin重新开始工作——像这样配置一个成熟的环境需要时间!并且SA在丢失之前已被禁用/var,因此它不会重新启动。无论如何,当我去检查/etc/var/log/maillog它是否正常工作时,我发现所有这些邮件都是中继消息?!威士忌探戈狐步舞?!

然后我检查了邮件队列——仅 Gmail 就有数十万!哇!

现在,我已经关闭了所有出站电子邮件:

default_transport = error: Sorry spammers, we're not sending your email! So sue us!

并开始试图找出问题所在。

我确实发现有些人声称自己是127.0.0.1,所以我关闭了它。我有条不紊地检查了所有各种(和丰富的)postfix配置选项,但找不到任何错误......

因此,我使用了其中一个脚本测试开放中继测试网站,这些网站尝试了十几种不同的黑客攻击,垃圾邮件发送者使用这些黑客攻击来说服配置良好的服务器中继他们的邮件,但我找不到任何 -上次我看的时候,有六个这样的网站!(他们怎么了?!如果你知道,请告诉我!)

所以我用了nmap。它没有做全面的工作,或者如果可以,我不熟悉如何做。但我转身重新发送并进行了测试。在测试中,它说:

Host is up (0.00027s latency).
rDNS record for <ip-addr>: <reverse-lookup-map>

PORT    STATE    SERVICE
25/tcp  open     smtp
|_smtp-open-relay: Server doesn't seem to be an open relay, all tests failed
465/tcp filtered smtps
587/tcp open     submission
|_smtp-open-relay: Server isn't an open relay, authentication needed
MAC Address: [its mac address] (controller's mfg name)

Nmap done: 1 IP address (1 host up) scanned in 22.03 seconds

我能找到的仅有的两个网站查看它并报告没有响应 - 一个加载但没有响应然后当我尝试重新加载页面时,它不会重新加载,第二个一直说它很忙,稍后再试。

所以......回到“手工”弄清楚。

好的,那么现在我们该怎么办?

所有对设置信息的请求都会很高兴地得到满足,但是配置文件首先是巨大的,其次它包含了很多我们不想要的私人信息。

更多信息- 应 anx 的要求,输出postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
compatibility_level = 3.6
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 10
debug_peer_list = <past-not-current-external-ip>
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_transport = error: <our-middle-finger-to-spammers>
disable_vrfy_command = yes
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 1073741824
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 536870912
meta_directory = /etc/postfix
milter_default_action = accept
mydestination = $myhostname, localhost.$mydomain, localhost, <list-of-60ish-domain-names>
mydomain = <primary-domain>
myhostname = mail.<primary-domain>
mynetworks = <list-of-5-internal-ips>
mynetworks_style = subnet
newaliases_path = /usr/bin/newaliases.postfix
proxy_interfaces = <a-non-extant-external-ip-we-used-to-have>
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
relay_domains = $mydestination, <list-of-11-internal-ips-most-don't-exist-now>
sample_directory = /usr/share/doc/postfix/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, check_helo_access hash:/etc/postfix/helo_access, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_sender_access hash:/etc/postfix/sender_access, check_client_access hash:/etc/postfix/pop-before-smtp, permit_mynetworks
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:/etc/postfix/pop-before-smtp, reject_non_fqdn_sender, reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/letsencrypt/live/<primary-domain-name>/fullchain.pem
smtpd_tls_dh1024_param_file = $config_directory/dh2048.pem
smtpd_tls_dh512_param_file = $config_directory/dh512.pem
smtpd_tls_key_file = /etc/letsencrypt/live/<primary-domain-name>/privkey.pem
smtpd_tls_security_level = may
soft_bounce = no
strict_mailbox_ownership = no
unknown_local_recipient_reject_code = 550

更多信息- 大多数也是应 anx 的要求:

  • Postfix使用端口 25 ( smtp) 和 587 (submission或msa)。

  • Dovecot使用端口 993 ( imaps) 和 995 ( pop3s),同时侦听被(多个)防火墙阻止的143 和 110 ( imap/ )。pop

    postconf -M

    smtp inet n - n - - smtpd

    提交 inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes

    拾取 unix n - n 60 1 拾取

    清理 unix n - n - 0 清理

    qmgr unix n - n 300 1 qmgr

    tlsmgr unix - - n 1000?1 tsmgr

    重写 unix - - n - - trivial-rewrite

    反弹 unix - - n - 0 反弹

    延迟 unix - - n - 0 反弹

    跟踪 unix - - n - 0 反弹

    验证 unix - - n - 1 验证

    刷新 unix n - n 1000?0同花顺

    proxymap unix - - n - - proxymap

    proxywrite unix - - n - 1 proxymap

    smtp unix - - 名词 - - smtp

    中继 unix - - n - - smtp -o syslog_name=postfix/$service_name

    showq unix n - n - - showq

    错误 unix - - n - - 错误

    重试 unix - - n - - 错误

    丢弃 unix - - n - - 丢弃

    本地 unix - nn - - 本地

    虚拟 unix - nn - - 虚拟

    lmtp unix - - 名词 - - lmtp

    铁砧 unix - - n - 1 铁砧

    scache unix - - n - 1 scache

    postlog unix-dgram n - n - 1 postlogd

尚未获取的信息:

  • “本地添加的接收标头”中有什么。
  • 分析给定队列 ID 的后缀日志“堆栈”。

保留程序!

只是想发送一些重要的电子邮件,但不想让垃圾邮件发送者单独使用我们的系统,我决定尝试关闭......dovecot我发现关闭dovecot并恢复default_transport设置允许出站正常工作并且Postfix没有不要成为开放中继!耶!

当然,它不适用于我们的非本地用户(数量 > 1 且 < 100),但是,嘿,“你必须做你必须做的……”

我认为这大大转移了注意力;dovecot是问题。

postfix
  • 1 1 个回答
  • 83 Views

1 个回答

  • Voted
  1. Best Answer
    Richard T
    2023-02-09T18:38:31+08:002023-02-09T18:38:31+08:00

    我现在确信这不是Postfix问题而是Dovecot问题。但是,这个答案很可能对其他人有帮助。

    特别是,如何确定它可能不是Postfix问题是一个比我预期的学习曲线更大的学习曲线,对于一个使用同一个系统(作为系统管理员)已经使用了 20 年甚至更长时间的人来说。

    我没有意识到的是,通过这种配置,Postfix它自己“放弃了权限控制”给Dovecot. 而且,在这一点上,Dovecot除了我们在现场之外,从我们这些不在内部网络中的人那里接收有效连接的能力已经成为我们运作的一个重要特征。

    值得庆幸的是,它对我们来说不如对许多其他组织那么重要,因为我们有其他选择,但现实是大多数人不想费心通过命令行登录只是为了处理邮件——我怀疑这是最受欢迎的位置!——在这种情况下!但这并没有让我认识到我没有认识到什么:

    你不能只是停止Dovecot,一旦配置,并期望能够发送 WITHOUT 重新配置Postfix不使用Dovecot。Dovecot而且,您甚至不能从外部屏蔽端口,因为无论如何Postfix都会Dovecot直接调用!

    最终,根据我的理解(很高兴被证明是错误的!)一旦配置,Postfix放弃所有伪装成有效用户的连接的所有安全权限Dovecot,尽管所有“内部”发送和接收功能正常Dovecot运行和Postfix阻止从发送(如问题中所述)。

    我认为用这个问题来询问 aboutDovecot的问题既徒劳又不合适,虽然我认为这些评论构成了一个有效的答案,但我需要问另一个问题因为Dovecot“如果我能找到问题所在,我会被诅咒!”

    我强烈怀疑我正在制作一个(可能并不少见)错误或者,我们现在的版本中有一个错误,重建后,因为重新加载之前的配置没有发送垃圾邮件,这就是我们已经使用了几天的在垃圾邮件发送者开始使用我们的系统之前!值得注意的是,当我们没有停止Postfix发送时,我们发现/用于测试我们系统的外部系统都没有认为我们的系统是一个开放的邮件中继,但不可否认它不正确地中继了数十万封电子邮件!此外,及时打开备份(允许 Postfix 发送)

    在这里值得一提的是,我已经检查了日志,并且在有限的时间里,考虑到目前对我的所有要求,我有 90% 以上的把握确认没有“被盗凭据”,但这还没有确定证明。我肯定没有在日志中看到证据,但我并不热衷于使用新的日志记录配置再次向垃圾邮件发送者开放以获取更多数据。也许正是因为这个原因,始终拥有最大授权日志记录是值得的!

    • 1

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve