zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2013.4.15 Particle Swarm Optimization with Skyline Operator for Fast Cloudbased Web Service Composition
    Adaptive service composition in flexible processes
    2013.4.13 DomainSpecific Service Selection for Composite Services
    2013.4.14 Modeling and Algorithms for QoSAware Service Composition in VirtualizationBased Cloud Computing
    2013.5.29 Towards Networkaware Service Composition in the Cloud
    Efficient algorithms for Web services selection with endtoend QoS constraints
    SQL Server中常用的SQL语句
    接口限流自定义注解
    linux服务器生产环境搭建
    MVEL自定义函数重复掉用报错:duplicate function
  • 原文地址:https://www.cnblogs.com/zdz8207/p/Linux-postfix-sendmail2.html
Copyright © 2011-2022 走看看