我很惭愧,但我不得不寻求帮助。我的服务器被用来发送垃圾邮件,我发现我只需通过 telnet 连接(编辑:从办公室、家里的任何服务器,甚至直接从 CMD/Putty Telnet 连接),无需任何登录/授权即可从/rcpt 向/data 添加邮件,并将邮件从我的域发送到任何外部邮箱(例如 gmail 帐户)。我在 Debian 上使用 Exim/SMTP/CSF,对它们有基本的了解。
root@vps:~# telnet example.com 25
Trying 19x.10x.8x.1xx...
Connected to example.com.
Escape character is '^]'.
220 serwer.example.com.pl ESMTP Exim 4.91 Wed, 19 Sep 2018 10:48:05
+0200
mail from: [email protected]
250 OK
rcpt to: [email protected]
250 Accepted
data
354 Enter message, ending with "." on a line by itself
test data.
.
250 OK id=1g2Y9t-0003yu-Of
我想防止这种情况发生并强制进行任何形式的身份验证,以防止从我的服务器向外部邮箱发送垃圾邮件。我的第二台服务器在尝试执行同样的事情时,在“rcpt to”之后:命令返回“550 authentication required”。我认为这是正确的行为,所以你不能发送垃圾邮件。
在我的 exim.conf 中,我有空的中继参数(我尝试输入我的服务器的 IP 或本地主机地址,但没有成功):
addresslist whitelist_senders = lsearch;/etc/virtual/whitelist_senders
addresslist blacklist_senders = lsearch;/etc/virtual/blacklist_senders
domainlist blacklist_domains = lsearch;/etc/virtual/blacklist_domains
domainlist whitelist_domains = lsearch;/etc/virtual/whitelist_domains
domainlist local_domains = lsearch;/etc/virtual/domains
domainlist relay_domains =
domainlist use_rbl_domains = lsearch;/etc/virtual/use_rbl_domains
hostlist auth_relay_hosts =
hostlist bad_sender_hosts = lsearch;/etc/virtual/bad_sender_hosts
hostlist bad_sender_hosts_ip = net-lsearch;/etc/virtual/bad_sender_hosts
hostlist relay_hosts =
hostlist whitelist_hosts = lsearch;/etc/virtual/whitelist_hosts
hostlist whitelist_hosts_ip = net-lsearch;/etc/virtual/whitelist_hosts
身份验证部分
begin authenticators
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = "${perl{smtpauth}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${perl{smtpauth}}"
server_set_id = $1
我如何保护我的 smtp 套接字?我如何强制“需要身份验证”过程?我尝试将 .conf 文件与我的第二台服务器进行比较,但尽管尝试了 2 天,我还是没有成功。
答案1
删除*
from dc_relay
。这允许任何人发送邮件。
在文件中 /etc/exim4/exim4.conf.localmacros
添加以下内容
MAIN_TLS_ENABLE = true
请加server_mail_auth_condition
点击此处