磁盘 io 总是满的状态

该服务器只有监控和邮件elk在上面。

发现邮件日志 疯狂的输出

tail -f /var/log/maillog

大致都是来自于 yahoo.com.tw的东西

清空了 /var/spool/postfix/incoming active bounce defer deferred    看情况而定

类似于这种格式

Jun  ::  postfix/error[]: 12A9BD00AFD: to=<b9081135@yahoo.com.tw>, relay=none, delay=9.5, delays=8.3/0.01//1.3, dsn=4.4., status=deferred (delivery temporarily suspended: lost connection with mx-tw.mail.gm0.yahoodns.net[27.123.206.55] while sending RCPT TO)
Jun :: postfix/error[]: 12A9BD00AFD: to=<baller0819@yahoo.com.tw>, relay=none, delay=9.6, delays=8.3/0.01//1.3, dsn=4.4., status=deferred (delivery temporarily suspended: lost connection with mx-tw.mail.gm0.yahoodns.net[27.123.206.55] while sending RCPT TO)
Jun :: postfix/error[]: 12A9BD00AFD: to=<belonguandme@yahoo.com.tw>, relay=none, delay=9.6, delays=8.3/0.01//1.3, dsn=4.4., status=deferred (delivery temporarily suspended: lost connection with mx-tw.mail.gm0.yahoodns.net[27.123.206.55] while sending RCPT TO)
Jun :: postfix/cleanup[]: 8CDDCD00AFF: message-id=<HMVJLNPHPPGQZMQGTTADBOUMA@.com>
Jun :: jxq-c2-- postfix/qmgr[]: 8CDDCD00AFF: from=<qqnvuolu@.com>, size=, nrcpt= (queue active)
Jun :: postfix/error[]: 8CDDCD00AFF: to=<@yahoo.com.tw>, relay=none, delay=9.1, delays=9.1/0.01//0.02, dsn=4.4., status=deferred (delivery temporarily suspended: lost connection with mx-tw.mail.gm0.yahoodns.net[27.123.206.55] while sending RCPT TO)

最后在 postfix的main.cf 修改并添加了一些东西,修改的为:

第一个需要修改的参数是myhostname,指向真正的域名,例如:

myhostname = mail.example.com
mydomain参数指向根域: mydomain = example.com
myorigin和mydestination都可以指向mydomain: myorigin = $mydomain
mydestination = $mydomain
Postfix默认只监听本地地址,如果要与外界通信,就需要监听网卡的所有IP: inet_interfaces = all
Postfix默认将子网内的机器设置为可信任机器,如果只信任本机,就设置为host: mynetworks_style = host
配置哪些地址的邮件能够被Postfix转发,当然是mydomain的才能转发,否则其他人都可以用这台邮件服务器转发垃圾邮件了: relay_domains = $mydomain

现在,Postfix已经基本配置完成,我们需要对邮件的发送进行控制:

  • 对于外域到本域的邮件,必须接收,否则,收不到任何来自外部的邮件;
  • 对于本域到外域的邮件,只允许从本机发出,否则,其他人通过伪造本域地址就可以向外域发信;
  • 对于外域到外域的邮件,直接拒绝,否则我们的邮件服务器就是Open Relay,将被视为垃圾邮件服务器。

先设置发件人的规则:

smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/postfix/sender_access, permit

以上规则先判断是否是本域地址,如果是,允许,然后再从sender_access文件里检查发件人是否存在,拒绝存在的发件人,最后允许其他发件人。

然后设置收件人规则:

smtpd_recipient_restrictions = permit_mynetworks, check_recipient_access hash:/etc/postfix/recipient_access, reject

以上规则先判断是否是本域地址,如果是,允许,然后再从recipient_access文件里检查收件人是否存在,允许存在的收件人,最后拒绝其他收件人。

/etc/postfix/sender_access的内容:

example.com REJECT

目的是防止其他用户从外部以xxx@example.com身份发送邮件,但登录到本机再发送则不受影响,因为第一条规则permit_mynetworks允许本机登录用户发送邮件。

/etc/postfix/recipient_access的内容:

postmaster@example.com OK
webmaster@example.com OK

因此,外域只能发送给以上两个Email地址,其他任何地址都将被拒绝。但本机到本机发送不受影响。

最后用postmap生成hash格式的文件:

# postmap sender_access
# postmap recipient_access

启动Postfix:

# /etc/init.d/postfix start

参考http://www.liaoxuefeng.com/article/00137387674890099a71c0400504765b89a5fac65728976000

smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/postfix/sender_access, permit
smtpd_recipient_restrictions = permit_mynetworks, check_recipient_access hash:/etc/postfix/recipient_access, reject non_fqdn_reject_code =
#unknown_local_recipient_reject_code =
#unknown_local_recipient_reject_code =
unknown_virtual_alias_reject_code =
unknown_virtual_mailbox_reject_code =
maps_rbl_reject_code =

定义sender和recipient_access

[root@ log]# cat /etc/postfix/sender_access
yahoo.com.tw REJECT
yahoo.com.jp REJECT
yahoo.co.jp REJECT
.com REJECT
yandex.ru REJECT
physiciansnews.com REJECT
keekoo.com REJECT
orifegypt.com REJECT
sperinde.com REJECT
keylessremotewarehouse.com REJECT
[root@ log]# cat /etc/postfix/recipient_access
noreply@playyx.com OK
yahoo.com.tw REJECT
yahoo.com.jp REJECT
yahoo.co.jp REJECT
.com REJECT
yandex.ru REJECT
physiciansnews.com REJECT
keekoo.com REJECT
orifegypt.com REJECT
sperinde.com REJECT
keylessremotewarehouse.com REJECT

然后执行 postmap

# postmap sender_access
# postmap recipient_access 重启postfix

以上步骤做完发现日志内的这些邮件已经拒绝了,但是日志还是搜搜的打印,格式如下

Jun  ::  postfix/smtpd[]: NOQUEUE: reject: RCPT from unknown[121.22.69.214]:  5.7. <eoyhscpr@.com>: Sender address rejected: Access denied; from=<eoyhscpr@.com> to=<thankupbig@yahoo.com.tw> proto=SMTP helo=<>
Jun :: postfix/smtpd[]: NOQUEUE: reject: RCPT from unknown[121.22.69.214]: 5.7. <eoyhscpr@.com>: Sender address rejected: Access denied; from=<eoyhscpr@.com> to=<tel331699@yahoo.com.tw> proto=SMTP helo=<>
Jun :: postfix/smtpd[]: NOQUEUE: reject: RCPT from unknown[121.22.69.214]: 5.7. <eoyhscpr@.com>: Sender address rejected: Access denied; from=<eoyhscpr@.com> to=<wangsir1357@yahoo.com.tw> proto=SMTP helo=<>
Jun :: postfix/smtpd[]: NOQUEUE: reject: RCPT from unknown[121.22.69.214]: 5.7. <eoyhscpr@.com>: Sender address rejected: Access denied; from=<eoyhscpr@.com> to=<ttuu01@yahoo.com.tw> proto=SMTP helo=<>

于是开启了防火墙

默认 允许所有

drop掉这些IP 参考http://blog.csdn.net/langeldep/article/details/38704291

用  gcc   -g -o dyn  dyn.c    , 编译后生成了可执行文件   dyn

我的dyn可执行文件在  /root 目录, 所以用 命令:

nohup   tail  -f   /var/log/maillog  |  /root/dyn  &

让它自己跑吧。

过一段时间后, 我们再看maillog日志,  已经基本没有 不认识的IP地址再连接过来发邮件了。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define BUF_LEN 4096
#define DATA_LEN 4096*10 int main (int argc, char** argv)
{
//too many errors after RCPT from 36-224-128-99.dynamic-ip.hinet.net[36.224.128.99]
//too many errors after RCPT from 118-169-22-28.dynamic.hinet.net[118.169.22.28]
//too many errors after AUTH from unknown[79.125.161.236] char buf[BUF_LEN] = {};
const char* sep = "too many errors after"; while ()
{
memset (buf, , sizeof(buf));
char* tp = fgets (buf, sizeof(buf)-, stdin);
if (tp != NULL)
{
int buflen = strlen(tp);
char* p = strstr(buf, sep);
if (p != NULL)
{
char* p1 = p + strlen(sep) + ;
char* ps = NULL;
char* pe = NULL;
while (*p1 != '\0' && *p1 != '\n')
{
if (*p1 == '[')
ps = p1+;
if (*p1 == ']')
pe = p1;
p1++;
} if (ps != NULL && pe != NULL)
{
char ipbuf[]={};
memcpy (ipbuf, ps, pe-ps);
char ebuf[] = {};
snprintf(ebuf, sizeof(ebuf)-, "iptables -I INPUT -s %s -j DROP", ipbuf);
system (ebuf);
printf ("%s\n", ebuf);
} }
} } return ;
}

postfix 被当作垃圾邮件中转站的更多相关文章

  1. Linux中Postfix反病毒和垃圾邮件工具(十)

    amavisd-new amavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成.它一般通过SMTP.ESMTP或 ...

  2. Linux中Postfix反病毒和垃圾邮件(十)

    amavisd-new amavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成.它一般通过SMTP.ESMTP或 ...

  3. postfix疯狂外发垃圾邮件

    分析 一.查找main.cf配置文件 localhost# find / -name main.cf /etc/postfix/main.cf 二.打开/etc/postfix/main.cf来看看. ...

  4. Postfix上的反垃圾邮件的四个方法

    在介绍如何配置Postfix的smtp配置之前有必要首先介绍一下它的背景和特点.Postfix是一个由IBM资助下由WietseVenema 负责开发的自由软件工程的一个产物,其目的是为用户提供除se ...

  5. STMP发送邮件被当垃圾邮件处理的解决方法

    昨天使用了.Net通过smtp发送邮件的方式发送了一封邮件到自己的QQ邮箱,但是发送成功后并没有提示邮箱收到新的邮件,而且去收件箱里面也没有新增的邮件. 这让本人觉得奇怪,所以就觉得是否被当作垃圾邮件 ...

  6. postfix反垃圾邮件说明

    参考地址:http://guailele.blog.51cto.com/1156442/780223 1.打开 smtp 的认证模块 在/etc/postfix/main.cf文件最后加上:   sm ...

  7. 用Postfix + Dovecot 搭建的邮件server被垃圾邮件其中转server的处理

    今天发邮件. 发送失败.然后到server上看日志, 发现硬盘被垃圾邮件的缓存队列和日志塞满了. tail    -f    /var/log/maillog   发现疯狂刷屏.部分日志例如以下 : ...

  8. linux 安装wordpress 无故往外发送大量垃圾邮件

    linux 安装wordpress 无故往外发送大量垃圾邮件 始末 表现出来的现象就是, 网站运行没多久,mysql服务就挂了,重启也无法启动起来,提示 No such file or dicrion ...

  9. Postfix+Dovecot+MySQL搭建邮件服务器

    网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇.本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器. 说到邮件服务器,网上有 ...

随机推荐

  1. 序列积第m小元素 二分答案优化

    给出两个长度为n的数组A和B, 在A和B中各任取一个, 可以得到n×n个积. 求第m小的元素. n<=100000 这一道题的意思就是 a1 a2 a3 a4.. b1 b2 b3 b4 n^2 ...

  2. cogs 2098. [SYOI 2015] Asm.Def的病毒 LCA 求两条路径是否相交

    2098. [SYOI 2015] Asm.Def的病毒 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 M ...

  3. 七彩线段 - 装压dp (牛客网)

    题目描述听说彩虹有七种颜色?一维坐标轴上n条线段,每条线段左端点l,右端点r,颜色为c,从中选m种颜色的互不接触的线段,每种颜色可选多条,所选线段的总长度最长为多少?输入描述: 第一行2个整数 n, ...

  4. 《C# 爬虫 破境之道》:概述

    第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. ...

  5. Docker + node(koa) + nginx + mysql 线上环境部署

    在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...

  6. Qt Installer Framework翻译(7-1)

    配置文件 配置文件可自定义安装程序的用户界面和行为.该文件通常称为config.xml,位于config文件夹中. 最小配置文件由一个<Installer>根元素组成,<Name&g ...

  7. pywin32 获取 windows 的窗体内文本框的内容

    用 spy++去确认找到了文本框的句柄了. 用函数 win32gui.SendMessage 获取不了文本框的文本内容,用 str 类型的参数接收获取的内容的话没有获取到东西,而用 PyBuffer ...

  8. 钝化 会钝化 订单审批流程 码一会er

    先放一张订单审批流程图.预则立嘛

  9. 图解kubernetes调度器SchedulerExtender扩展

    在kubernetes的scheduler调度器的设计中为用户预留了两种扩展机制SchdulerExtender与Framework,本文主要浅谈一下SchdulerExtender的实现, 因为还有 ...

  10. kafka for centos7

    https://blog.csdn.net/wqh8522/article/details/79163467