CentOS 6 搭配 cPanel/WHM。黑客不断以某种方式进入我们的 cPanel 邮件帐户并从我们的服务器发送垃圾邮件。他们要么伪造发件人地址,要么只是使用“回复”让受害者看到垃圾邮件发送者选择的域名,例如 lottery.microsoft.com 或类似的域名。我决定锁定服务器并要求托管公司阻止任何来自非本地域的传出或传入邮件。
他们对 /etc/exim.conf 做了一些更改,在文件中添加了看起来像是 C 代码的内容。我不知道配置文件中可以包含编程结构。有人能解释下面几行的含义吗?
他们添加的代码旨在阻止向非本地域发送电子邮件或从非本地域发送电子邮件。但现在我想将其更改为允许向非本地域发送电子邮件,但继续阻止从非本地域发送电子邮件。我还想阻止发送带有非本地“回复”的电子邮件。
我假设#
是注释行。这些变量从何而来?什么是allow_fail
和no_more
?if 语句是否可以运行,还是用注释#
?
#ifdef DCconfig_local
# configtype=local
#
# Stand-alone system, so generate an error for mail to a non-local domain
nonlocal:
debug_print = "R: nonlocal for $local_part@$domain"
driver = redirect
domains = !example.com
qualify_domain = example.com
# domains = ! +local_domains
allow_fail
data = :fail: Mailing to remote domains not supported
no_more
#.endif
答案1
配置exim
文件具有允许复杂处理的语法。这是您包含的配置片段所使用的语言。该语言是Exim 文档记录配置。
邮件可能由 以外的软件发送exim
。如果由 发送,则应在或该期间的轮换日志 exim
中记录传输情况。/var/log/exim/mainlog
如果配置变量设置正确,默认exim
配置通常非常安全。通常,它配置了许多以 开头的宏定义DC
。就您而言,我希望DCconfig_internet
启用。修复您的收件人处理,您应该能够恢复提供商所做的更改。要恢复它,只需启用本节顶部和底部的预处理器指令。
中继限制通常在收件人 ACL 中处理。检查配置文件中是否有以 开头的行acl_smtp_rcpt
。然后搜索赋值右侧的值。这将是用于检查收件人的 ACL。通读此检查accept
和deny
块,直到您找到像 这样的行message = relay not permitted
。该块应如下所示:
require
message = relay not permitted
domains = +local_domains : +relay_to_domains
如果您允许中继,则电子邮件要么在您到达此块之前被接受,要么此块允许外部域。这些应该有如下定义:
hostlist relay_from_hosts = <; 127.0.0.1 ; ::1
domainlist local_domains = example.com
domainlist relay_to_domains =
如果 local_domains 或 reply_to_domains 包含通配符 ('*'),则您可能是一个开放中继。
回答您的具体问题:
#
是注释分隔符。#ifdef
和是禁用的预处理器指令。启用和时,#.endif
读取和的工作方式与预处理器指令相同。.ifdef
.endif
c
allow_fail
是一个配置命令,允许路由器发生故障而不反弹当前消息。no_more
是一个配置指令,如果此路由器成功则停止路由。
答案2
从代码中无法判断是ifdef
真是假。
指令的含义如下:
如果收件人的域名不是,
example.com
则路由器已激活如果未提供发件人的域名,
qualify_domain
example.com
则使用允许
:fail:
作为重定向数据将消息重定向至
:fail:
并答复发件人:Mailing to remote domains not supported
停止消息处理