postfix发信提示 Error: too many connectino from
查看提示,很明显是提示连接数过多导致的。
有提示上面的信息,看提示的IP地址是一个网关的地址,使用netstat -ano|grep ':25'|wc -l
看了下,25端口的连接的IP地址,几乎全是这个IP连接过来的。
问题就出来了,应该是这个IP地址连接过多,导致的。为什么会连接过多呢。因为这个是网关,服务器在内网,直接使用nat 映射的。
访问服务器的IP地址全转为网关的内网IP地址了。此处不得不说下,现在很多设备都会默认这样,这样设置不好,不利于其它的控制,最好设置为显示来源IP地址,这样如果有什么问题,还可以很快的查出来是那里的问题。但是用户反馈改这个麻烦,不会改!只能改邮件系统里面的设置了。
查看了下,有几个参数有限制:
smtpd_client_connection_rate_limit=50
smtpd_client_message_rate_limit=50
从字面意思就可以大概的理解到这两个参数的意思了。看现在的配置信息里面smtpd_client_connection_rate_limit=50 是为50,再看上面wc -l 出来的连接数为200-300之间,这明显会有问题,直接在后面加了0,改为500,然后再重启下服务 : /etc/init.d/postfix restart
再观察了一段时间,没有问题,正常。
postfix发信的频率控制有几个:
客户端发送邮件的频率控制.(某种情况下smtpd_client_message_rate_limit和smtpd_client_connection_rate_limit的效果是一样。
smtpd_client_connection_rate_limit是指连接到服务器25端口就开始计算,
smtpd_client_message_rate_limit是发送邮件时计算.)
smtpd_client_recipient_rate_limit=10
rcpt to的频率控制,也就是说TO了多少个人.
smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}
指不做频率控制检测的网络,默认是mynetworks.
posftfix的性能控制
之
所以对postfix的性能进行控制,是为了在遇到邮件风暴时保证postfix可以正常运行。通常,我们可以通过对下列postfix参数的配置来调节
postfix的性能,这些参数都是通过mail.cf配置文件进行配置的,修改以后不要忘了运行postfix reload命令来使配置生效。
1. 进程数限制
可以通过default_process_limit 参数来控制postfix系统同时可以运行的最大进程数目。缺省值是50个。
2. 对同一目标主机的并发连接限制
当向同一目标主机发出SMTP连接时,postfix初始化发出两个SMTP连接,如果投递成功则增加并发的SMTP连接数目,遇到拥塞时又减少并发连接的数目。postfix中通过以下的参数对同一目标主机的并发连接进行控制:
* initial_destination_concurrency:控制对同一目标主机的初始化并发连接数目。缺省值为2。
* default_destination_concurrency_limit:控制初始化连接后对同一目标主机的最大并发连接数目。缺省值为10。
* local_destination_concurrency_limit:控制对同一本地收件人的最大同时投递的邮件数目。缺省值为2,因为对本地同一收件人投递邮件时投递工作只能一个接一个的进行,所以设得在大也没用。
3. 对同一封邮件的收件人数目限制
通过default_destination_recipient_limit参数来控制postfix的投递代理(如
smtp进程)可以将同一封邮件发送给多少个收件人。缺省值为50。也可以用明确指出该投递代理的参数来覆盖该缺省值。如用smtpd_recipient_limit来指定smtp投递代理可以将同一封邮件发送给多少个收件人,该参数的缺省值为1000。
4. 推迟投递控制
通过defer_transports参数,我们可以推迟投递该参数指定的邮件直到postfix明确的提出投递要求。下面我们看一个例子:
有一个小型的局域网,用户都将邮件发送给局域网内部的一台postfix
邮件服务器,然后通过在该服务器上拨号将邮件发送出去。这时我们可以这样指定该参数的值:
defer_transports = smtp
该语句表示postfix推迟投递所有的邮件直到执行sendmail -q命令,这样
我们就可以在ppp的脚本中加上sendmail -q,以便在拨号成功后让postfix开始投递邮件。
5. 关于延迟邮件的再投递控制
可以通过以下的几个参数实现对延迟邮件的再投递控制:
queue_run_delay:设置队列管理进行扫描deferred邮件队列的频率,缺省值为1000秒。
maximal_queue_lifetime:设置postfix在放弃投递而返回不可投递信息前,被延迟邮件再deferred邮件队列中的生存时间。
minimal_backoff_time:当一封邮件投递失败后,邮件队列将在一段时间内忽视该邮件的存在,也就是我们前面讲的时间邮票。该参数就是用来设置最小的时间邮票。缺省值为1000秒。
maximal_backoff_time:设置最大的时间邮票。
6. 对拒绝服务攻击的处理
postfix对每一个SMTP会话都设置一个错误计数器,当该客户端的请求未
被接受或违反那UCE规则时,该计数器就增1。随着计数器的增加,postfix将采取不同的措施来防止恶意用户的拒绝服务攻击。
smtpd_error_sleep_time:当该错误计数器的值还很小时,postfix将暂停
smtpd_error_sleep_time指定的时间,然后向客户端报告一个错误。该参数的缺省值为5秒。
smtpd_soft_error_limit:当错误计数器的值超过该参数指定的值时,postfix在响应该客户端请求前将沉睡一段时间。缺省值为10。
smtpd_hard_error_limit:当错误计数器的值超过该参数指定的值时,postfix
中断同该客户端的连接。缺省值为100。
postfix对使用资源的控制
通过特定的postfix配置参数,我们可以实现postfix运行时对所消耗的资源的灵活控制。可以通过以下几个方面来控制postfix消耗的资源:
1. 限制内存中的对象的大小
要控制对内存资源的消耗,必须控制内存中对象的大小。可以用以下的参数来进行对象大小的控制:
line_length_limit:控制读入数据时每一行的大小,如果太长则强行将其分割成更短的行,太长的行在投递时再重组。缺省值为2048 bytes。
header_size_limit:限制信头长度。缺省值为102400bytes。
message_size_limit:限制postfix队列文件的大小。缺省值为10240000 bytes。
queue_minfree:邮件队列中可用的空间大小。缺省为无限制。建议该值最好时message_size_limit的数倍以便于处理大邮件。
bounce_size_limit:限制某一邮件不可投递时,返回给发件人不可投递报告的大小,缺省值为50000 bytes。
2. 限制内存中对象的数目
qmgr_message_recipient_limit:设置内存中收件人地址的最大数目。缺省值为10000。
qmgr_message_active_limit:设置active邮件队列中邮件数目的最大值。缺省值为1000。
duplicate_filter_limit:设置需要local和cleanup后台程序记住的收件人地址的最大数目。缺省值为1000。
3.限制等待一个外部命令完成的时间
command_time_limit:设置local程序等待一个外部命令完成的时间。缺省值为1000秒。
4. 限制文件锁定的操作时间
deliver_lock_attempts:设置锁定一个文件的最大尝试次数。缺省值为5次。
deliver_lock_delay:设置如果锁定一个文件失败后再次尝试的等待时间,缺省值为1秒。
5. 控制错误恢复
在某些情况下(如高负载),postfix的某个进程可能会死掉,这时master进
程会试图重新启动该进程,我们可以通过下面的参数来控制这种行为:
fork_attempts:试图重启动一个进程的最大尝试次数。缺省值为5次。
fork_delay:每两次尝试之间的等待时间,缺省值为1秒。
transport_retry_time:队列管理进程每两次尝试连接一个不正常的投递代理进程之间的等待时间。缺省为60秒。
转自:http://www.365dw.cn/601.html
postfix发信提示 Error: too many connectino from的更多相关文章
- 对express中引入文件时提示Error: Cannot find module错误的理解
打算写个小demo,在引入一个routes文件时,一直提示Error: Cannot find module('./routes')的错误,经过一番了解. 如果要把整个文件夹下所有的模块都引进来 v ...
- Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效
Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效 错误信息:MSBulid\14.0\bin\Microsoft.Common.Cur ...
- maven 项目编译时候提示:Error building POM (may not be this project's POM).
编译时候提示Error building POM (may not be this project's POM)的错误,具体信息如下: [0] 'dependencies.dependency.ver ...
- 安装Stomp扩展时错误提示error: 'zend_class_entry' has no member named 'default_properties'
在安装stomp扩展时, 有这样的提示 error: 'zend_class_entry' has no member named 'default_properties' 交待下安装上下文, sto ...
- Swift 提示 error running playground...
创建playground之后,我们将得到一个错误提示,Error running playground: Failed to prepare for communication with playgr ...
- 编译Uboot时提示error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
在Ubuntu14.04 64位系统中已经安装了libc6:i386的库,编译Uboot时提示error while loading shared libraries: libz.so.1: cann ...
- 老李秘技:loadrunner回放脚本错误提示Error: "HTTP Status-Code 500"
老李秘技:loadrunner回放脚本错误提示Error: "HTTP Status-Code 500" 当脚本回放的时候出现错误提示Error: "HTTP Sta ...
- mysql数据库导入sql文件时提示“Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes”解决办法
向mysql数据库中导入sql文件时,如果文件过大(几百M),会提示"Error Code: 1153 - Got a packet bigger than 'max_allowed_pac ...
- 修复运行 tasklist 命令时提示 ERROR: Not found
最近碰到了一个脚本运行 tasklist 总是提示 ERROR: Not found,在这里找到了修复的方法 https://superuser.com/questions/1282867/windo ...
随机推荐
- ABAP 常用函数
函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...
- VS2015 添加web服务(电子看板)
鼠标右键点击项目,选择引用----添加服务引用,输入WS地址后单击转到 http://ERPPRD02:8000/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/s ...
- Excel图表编辑---表格移动,样式修改
一.移动位置和调整大小 先鼠标选中如下面这个图片,之后点击上方的设计按钮,随后选择右边的, 再选择,就可以实现图片的表格之间的移动. 其中移动图表里面的,选中这个之后,图表的大小会根据窗口的大小自动调 ...
- 【pyspider】关于匹配html的数据
今天刚刚接触pyspider,在调试的时候注意匹配数据可以这样写: <div class="download-wp"> <a data-app-i ...
- 截图软件FastStone
屏幕截图软件(FastStone Capture) 好用,可以粘贴 / 复制. 可以做页面设计,有屏幕标尺,取色器.
- TOJ3955: NKU ACM足球赛(并查集+map+细节题)
时间限制(普通/Java):5000MS/15000MS 内存限制:65536KByte 描述 NKU ACM最近要举行足球赛,作为此次赛事的负责人,Lee要对报名人员进行分队.分队要遵循如下 ...
- unity的inputField文本框赋值问题
GameObject t = GameObject.Find("InputFieldT"); Text tt = t.transform.Find("Text" ...
- jQuery MD5 加密
一 MD5 概述 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value) ...
- Django使用jsonp和cors解决跨域请求问题
1.使用jsonp的方式解决跨域请求的问题 我启动两个django项目,然后使用的端口不一样,在项目1中通过ajax发请求给项目2,然后接受项目2发送过来的数据 先看项目1的ajax的代码 $(&qu ...
- vue解决遮罩层滚动方法
vue 遮罩层阻止默认滚动事件 在写移动端页面的时候,弹出遮罩层后,我们仍然可以滚动页面. vue中提供 @touchmove.prevent 方法可以完美解决这个问题 <div class=& ...