Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题
Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题
postfix如何设置发送邮件延迟通知
1 */1 * * * /bin/bash /home/delete_postfix.sh
加了个定时器,每小时清理一次发送失败的邮件队列了,这样阻塞最多也就阻塞一个小时了
sendmail如果有信件因故延迟发送,每4个小时就会给发送者发信提示信件延迟发送。
postfix能不能设置呢?
在main.cf中设置:
delay_warning_time = 4
因为考虑到信件流量的问题,postfix缺省不发送通知。
-------------
PostFix邮件发送性能与有效发送问题
用Redis存储每个域名最后的发送时间,
重复a,b
a) 获得并锁住可发送的域名。
b) 针对每一个可发送域名,
1. 如果相应的域名队列中存在待发送邮件,则发送并更新改域名的最后发送时间。
2. 解锁该域名发送记录。
这样,对邮件队列采用非阻塞队列,提高了系统的并发性。
看似解决了问题,但还是被部分服务商列入了黑名单。
于是对系统进行分析,如下:
这是一个典型的生产者与消费者问题,Java客户端生产的邮件定时推送到Postfix队列,然后Postfix消费队列上的邮件,发送到目标邮件服务器。
生产一封,发送一封的话,不会有任何问题,但如果队列中存在多封,那么向目标邮件服务器投送的速度就无法控制了。
于是检查postfix队列:
postqueue -p
发现确实堆积了一些邮件。
原因:系统运行中,某一封邮件发送的延迟会导致后面的邮件发送都被延迟。
处置方法:
在Java端进行发送速度的控制显然是治标不治本的,于是用Java端同样的逻辑修改PostFix中邮件发送的代码,
用同样的配置文件,最终从根本上解决了控制邮件发送速度的问题。
====================
postfix 删除队列中的邮件
列出目前在 Mail Queue 中的邮件
mailq
刪除所有在 Queue 中的邮件
postsuper -d ALL
刪除所有正在 deferred 队列中的邮件 (删除曾经发送失败的邮件 )
postsuper -d ALL deferred
刪除所有正在 deferred 队列中的郵件 ( 可看出哪些信被刪除了 )
find /var/spool/postfix/deferred -type f -exec rm -vf /{/} /;
刪掉「三天以前」无法发送的邮件
find /var/spool/postfix/deferred -type f -mtime +3 -exec rm -f /{/} /;
列出目前所有无法发送的邮件 find /var/spool/postfix/deferred -type f -exec ls -l –time-style=+%Y-%m-%d_%H:%M:%S {} /;
刪除超过 5 天的 “defer” 佇列中的退信记录 find /var/spool/postfix/defer -type f -mtime +5 -exec rm -f /{/} /;
预设所有跟Postfix 相关的邮件都会放在/var/spool/postfix/ 目录下,想了解Postfix是如何管理队列的,可以参考 qmgr -Postfix queue manager 的手册.
以下是每个目录的用途
MAIL QUEUES
* incoming 收信箱
* active 正在准备发送的邮件
* defered 无法发送的邮件,等待重发
* corrupt 无法读取或者损坏的邮件
* hold 暂停的邮件,需要手工启动 DELIVERY STATUS REPORTS
* bounce 每一位收件者的送信状态,记录为什么退信由 bounce(8) 管理
* defer 每一位收件者的寄送状态,说明为什么延迟由 defer(8) 管理
* trace 每一位收件者的寄送状态信息,说明被 Postfix 用 “sendmail -v” 或 “sendmail -bv” 命令执行的状态由 trace(8) 管理
==================
查看硬盘剩余的容量,发现‘/’目录下占用了大量的空间;可我在这个目录下面没有放什么东西;
仔细查看在/var/spool/postfix/maildrop/ 中发现了大量的文件。
由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面。
如果sendmail或者postfix正常运行,则会在/var/mail目录下也会堆积大量的邮件。
解决方法:
修改“/etc/crontab”
将‘MAILTO=root’替换成‘MAILTO=""’修改之后没有成功,需要重启crond服务才可以
也可从在crontab(crontab -e)中最前面直接加入MAILTO=""
===============
(host mx1.qq.com[58.251.110.111] refused to talk to me: 550 Connection frequency limited. http://service.mail.qq.com/cgi-bin/help?subt
QQ邮箱还是拒绝发送了,看来得换个其他邮箱才行了
关键是我们都是同样的QQ邮箱,每个人换不一样的可能好些
===============
39CEF62151 2695 Thu Aug 1 23:52:07 MAILER-DAEMON
(delivery temporarily suspended: connect to xxx.com[xxx.xx]:25: Connection refused)
为什么Postfix试图连接到其他机器的SMTP端口25? - 程序园
http://www.voidcn.com/article/p-zwqtagcc-bty.html
什么是MX记录?如何设置、检测MX记录 - 客服中心 - Oray
http://service.oray.com/question/172.html
Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题的更多相关文章
- 转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器
http://www.cnblogs.com/dudu/archive/2012/12/12/linux-postfix-mailserver.html 注:本文的邮件服务器只用于发送邮件,也就是ST ...
- linux平台搭建postfix邮件服务器
一,搭建邮件服务器前准备如下: Centos 7.2 64位Postfix-2.8.12.tar.gz Postfix MTA(邮件传输代理)Dovecot-2.1.8.tar.gz IMAP 和 P ...
- linux服务器下发送邮件
系统管理人员经常会遇到对于设备或者任务的预警与通知,通常情况有发送短信.邮件等方式.发送短信一般来说需要有短信猫(硬件)或者调用libfetion给飞信用户发送.本文介绍几种简单的发送邮件的方式. 本 ...
- linux服务器分析优化
转:http://jiekeyang.blog.51cto.com/11144634/1774473 一.系统性能分析 1.系统的性能是指操作系统完成任务的有效性.稳定性和响应速度.操作系统完成任务与 ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
- linux服务器开发二(系统编程)--进程相关
进程相关的概念 程序与进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(CPU.内存.打开的文件.设备.锁等等). 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...
- Linux简单配置SendMail发送邮件
本文简单整理了一下如何在Linux服务器上安装.配置SendMail发送邮件的步骤,此文不是配置邮件服务器,具体测试环境为CentOS Linux release 7.2.1511 (Core) ,如 ...
- Linux服务器性能评估与优化(一)
网络内容总结(感谢原创) 1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下 ...
随机推荐
- 区块链社交APP协议分析:BeeChat
- BeeChat是什么 - BeeChat报文情况 BeeChat使用过程中产生的报文如下: 可以看到,其使用443端口,但内容并非SSL承载,格式不符合SSL,内容中含MsgNtf等明文串,但大部 ...
- CocoPods原理
CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让住项目依赖Pods项目, 这样,源码管理工作任务从主项目移到了Pods项目中. 1.Pods项目最终会编译成一个名为 ...
- MySQL 部署分布式架构 MyCAT (五)
分片(水平拆分) 4.全局表 业务使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 而且大部分的业务场景都会用到 ...
- PyCharm注释中出现中文运行报错的解决办法
SyntaxError: Non-UTF-8 code starting with '..... 方法一:在文件首行加上 # -*- coding:utf-8 -*- 方法二:更改编码格式 File ...
- 渗透测试学习 二十一、 JSP相关漏洞
大纲 ST2漏洞 (Struts2) 反序列漏洞 网站容器,中间键 其他漏洞 Struts2漏洞 简介: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相 ...
- ue4 FString 中文乱码问题
使用FString出现乱码,最简单的情况,FString Str = "你好"; 这时候就会出现乱码,解决方法是改成这样 FString Str = TEXT("你好&q ...
- Windows文件夹共享和Unity的PersisterdataPath
在共享机上存放unity开发的pc版本游戏,在其它机器双击就可以运行,但会遇到问题,比如: 游戏是需要下载资源的,默认情况下unity下载的资源是存放在persisterdataPath目录的,对于w ...
- lua 7 运算符
转自:http://www.runoob.com/lua/lua-miscellaneous-operator.html Lua提供了以下几种运算符类型: 算术运算符 关系运算符 逻辑运算符 其他运算 ...
- Class的使用,构造方法,实例属性和实例方法,静态属性和静态方法,this和super关键字,类的继承
s6新增了一种定义对象实例的方法,Class(类)这个概念,作为对象的模板.class可以看作只是一个语法糖,通过class关键字,可以定义类.让对象原型的写法更加清晰.更像面向对象编程的语法. 一. ...
- java jvm虚拟机类加载器
在Java中任意一个类都是由这个类本身和加载这个类的类加载器来确定这个类在JVM中的唯一性. 类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到J ...