Sendmail 退回

Sendmail 退回

我收到了发给前用户的邮件。他们的帐户已消失,因此邮件被退回,但退回的邮件本身又退回给我。这似乎很明显,这是一个垃圾邮件服务器,不接受任何邮件。有什么好方法可以检测出这种情况并采取更聪明的措施,例如将发件人列入黑名单或将服务器设为 fail2ban?

答案1

所以我刚刚给你写了一个简单的脚本草稿,但是:

我只是假设您正在使用可以访问mail命令和blacklist文件的基于 Linux 的邮件服务器。

-显然,您需要对其进行编辑以适合您的特定设置。

-这只是一份草稿,可能存在一些错误,而且,就像我说的,有些东西需要更改。不要复制/粘贴它——它可能不起作用。

bash
#!/bin/bash

# Set the blacklist file location
BLACKLIST_FILE=/path/to/blacklist

# Process bounced emails
for email in /var/mail/bounced/*.eml; do
  # Extract the sender's address from the bounce message
  SENDER=$(grep -oP 'from=<\K[^>]+>' "$email")

  # Check if the sender is already blacklisted
  if grep -Fxq "$SENDER" "$BLACKLIST_FILE"; then
    # If blacklisted, discard the email and continue
    echo "Blacklisted sender: $SENDER"
    continue
  fi

  # Analyze the bounce message (e.g., check for spam patterns)
  # ...

  # If the sender appears to be a spam server, add them to the blacklist
  if [ /* your analysis condition */ ]; then
    echo "$SENDER" >> "$BLACKLIST_FILE"
    echo "Added $SENDER to blacklist"
  fi
done

是的...这篇文章有点长,如果你是编码新手,可能会觉得有点困惑,但这只是一份草稿。

现在这是实际操作方法:

  1. 将此脚本保存为文件(例如bounce_handler.sh)。
  2. 使用 使脚本可执行chmod +x bounce_handler.sh
  3. 配置您的邮件服务器以将退回的电子邮件传送到此脚本(例如,使用.forward文件或邮件服务器配置设置)。
  4. 设置一个 cron 作业来定期运行脚本(例如每 15 分钟一次)。

让我知道事情的后续!

相关内容