- 浏览: 853806 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zjhzwx1212:
为什么用threadLocal后,输出值是从20开始的,而定义 ...
j2ee的线程安全--threadlocal -
aeoluspu:
不错 mysql 测试部分感觉不详细
用sysbench(或者super-smack)测试mysql性能 -
nanPrivate:
有没有例子,只理论,实践起来还是不会啊
JMS可靠消息传送 -
lwclover:
一个网络工程师 装什么b
postfix 如何删除队列中的邮件 -
maimode:
我也欠缺不少啊
理想的计算机科学知识体系
最近管理邮件系统时发现几个问题,一个是有些用户设置了转发,但是转发地址有问题,经常因为退信而塞爆 邮箱(有邮箱限额),之后的邮件都会被塞到等待队列里。还有就是有许多寄到本地虚拟域的信没有对应的用户,按说 Postfix 应该不会投递这类邮件,但是实际情况是它交给 maildrop 投递,而 maildrop 发现没有该用户,报告指定用户非法,这时正确的动作应该是退信,不过可能是我用的版本太低,maildrop 没有退信,而是把它放到等待队列里等待下次再试。这样等待队列里经常会有大量的这种邮件。所以,要想办法把这些邮件都清除掉。
在《Postfix 权威指南》里有一个叫 pfdel 的 Perl 小程序,可以用它删除指定邮件地址的邮件(不管是发信人还是收信人的邮件地址),这个虽然方便,但是如果想要清除因为 maildir over quota 或者 Invalid user specified 错误而产生的邮件,还需要修改一下。下面是这四个程序:
- pfdel.pl
- luserdel.pl
- moqdel.pl
- jmoqdel.pl
其中,pfdel.pl 是用来删除队列中指定用户的邮件的,luserdel.pl 是用来删除队列中无效用户的邮件的,moqdel.pl 是用来删除队列中邮箱配额已满的用户的邮件的,jmoqdel.pl 是删除邮箱配额已满的用户的垃圾邮件箱的。
我现在把 luserdel.pl 放到 crontab 里,每天晚上清理一次,终于可以高枕无忧了。
#
# pfdel - deletes message containing specified address from
# Postfix queue. Matches either sender or recipient address.
#
# Usage: pfdel <email_address>
#
use strict;
# Change these paths if necessary.
my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";
my $email_addr = "";
my $qid = "";
my $euid = $>;
if ( @ARGV != 1 ) {
die "Usage: pfdel <email_address>\n";
} else {
$email_addr = $ARGV[0];
}
if ( $euid != 0 ) {
die "You must be root to delete queue files.\n";
}
open(QUEUE, "$LISTQ |") ||
die "Can't get pipe to $LISTQ: $!\n";
my $entry = <QUEUE>; # skip single header line
$/ = ""; # Rest of queue entries print on
# multiple lines.
while ( $entry = <QUEUE> ) {
if ( $entry =~ / $email_addr$/m ) {
($qid) = split(/\s+/, $entry, 2);
$qid =~ s/[\*\!]//;
next unless ($qid);
#
# Execute postsuper -d with the queue id.
# postsuper provides feedback when it deletes
# messages. Let its output go through.
#
if ( system($POSTSUPER, "-d", $qid) != 0 ) {
# If postsuper has a problem, bail.
die "Error executing $POSTSUPER: error " .
"code " . ($?/256) . "\n";
}
}
}
close(QUEUE);
if (! $qid ) {
die "No messages with the address <$email_addr> " .
"found in queue.\n";
}
#!/usr/bin/perl -w
#
# luserdel - deletes message containing invalid user from
# Postfix queue.
#
# Usage: luserdel
#
use strict;
# Change these paths if necessary.
my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";
my $qid = "";
my $euid = $>;
if ( $euid != 0 ) {
die "You must be root to delete queue files.\n";
}
open(QUEUE, "$LISTQ |") ||
die "Can't get pipe to $LISTQ: $!\n";
my $entry = <QUEUE>; # skip single header line
$/ = ""; # Rest of queue entries print on
# multiple lines.
while ( $entry = <QUEUE> ) {
if ( $entry =~ /Invalid user specified/m ) {
($qid) = split(/\s+/, $entry, 2);
$qid =~ s/[\*\!]//;
next unless ($qid);
#
# Execute postsuper -d with the queue id.
# postsuper provides feedback when it deletes
# messages. Let its output go through.
#
if ( system($POSTSUPER, "-d", $qid) != 0 ) {
# If postsuper has a problem, bail.
die "Error executing $POSTSUPER: error " .
"code " . ($?/256) . "\n";
}
}
}
close(QUEUE);
if (! $qid ) {
die "No invalid user messages found in queue.\n";
}
exit 0;
#
# moqdel - deletes message containing maildir over quota from
# Postfix queue.
#
# Usage: moqdel
#
use strict;
# Change these paths if necessary.
my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";
my $qid = "";
my $euid = $>;
if ( $euid != 0 ) {
die "You must be root to delete queue files.\n";
}
open(QUEUE, "$LISTQ |") ||
die "Can't get pipe to $LISTQ: $!\n";
my $entry = <QUEUE>; # skip single header line
$/ = ""; # Rest of queue entries print on
# multiple lines.
while ( $entry = <QUEUE> ) {
if ( $entry =~ /maildir over quota/m ) {
($qid) = split(/\s+/, $entry, 2);
$qid =~ s/[\*\!]//;
next unless ($qid);
#
# Execute postsuper -d with the queue id.
# postsuper provides feedback when it deletes
# messages. Let its output go through.
#
if ( system($POSTSUPER, "-d", $qid) != 0 ) {
# If postsuper has a problem, bail.
die "Error executing $POSTSUPER: error " .
"code " . ($?/256) . "\n";
}
}
}
close(QUEUE);
if (! $qid ) {
die "No maildir over quota messages found in queue.\n";
}
exit 0;
#!/usr/bin/perl -w
#
# jmoqdel - deletes Junk directories whose maildir over quota from
# Postfix queue.
#
# Usage: jmoqdel
#
use strict;
my $HOME_BASE = "/var/vmail";
# Change these paths if necessary.
my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";
my $user = "";
my $domain = "";
my $email = "";
my $euid = $>;
if ( $euid != 0 ) {
die "You must be root to delete queue files.\n";
}
open(QUEUE, "$LISTQ |") ||
die "Can't get pipe to $LISTQ: $!\n";
my $entry = <QUEUE>; # skip single header line
$/ = ""; # Rest of queue entries print on
# multiple lines.
while ( $entry = <QUEUE> ) {
if ( $entry =~ /maildir over quota/m ) {
($user,$domain,$email) = split(/\n/, $entry, 3);
($user,$domain) = ($email =~ m!\s*(.+)@(.+)\s*!);
`rm $HOME_BASE/$domain/$user/Maildir/.Junk -rf &> /dev/null`;
next unless ($email);
}
}
close(QUEUE);
if (! $email ) {
die "No maildir over quota messages found in queue.\n";
}
发表评论
-
sysctl.conf
2011-07-06 14:54 1764fs.file-max=51200 net.core.net ... -
top的替代工具
2011-06-28 15:06 1475dstat -cgilpymn collectl and ... -
有用的小工具
2010-12-23 11:51 1356pv stream nessus Nikto ski ... -
调优linux i/o 行为
2010-11-25 11:27 2926http://www.westnet.com/~gsmith/ ... -
服务器部署工具
2010-11-12 16:32 2067http://www.linuxlinks.com/artic ... -
开源的配置管理工具
2010-11-12 16:24 1476最佳开源配置管理工具: Puppet / 提名:OpenQ ... -
优化ext3的mount选项
2010-11-12 10:24 1359defaults,commit=600,noatime,nod ... -
恢复r710biso 出厂设置
2010-11-10 10:30 1225ALT+E/F/B -
每进程io监控工具
2010-11-02 14:14 1664iodump iotop iopp pidstat b ... -
Intel Xeon 5500/5600系列 CPU服务器内存设置
2010-11-01 21:29 4857http://www.xasun.com/article/2a ... -
zabbix短信报警脚本文件
2010-10-21 14:28 2794附件 -
天外飞仙级别的Linux Shell命令
2010-10-16 09:59 1471本文编译自commandlinefu.com ( 应该是 Ca ... -
lenny+r710+lvm 重启问题解决方案
2010-10-15 14:22 1135ro rootdelay=10 quiet -
fai,debian 自动安装工具
2010-10-15 13:36 1123http://sys.firnow.com/linux/x80 ... -
十个服务器监控工具
2010-09-26 11:44 1841一位国外的技术博主在 ... -
restrict authorized_keys
2010-09-06 09:45 1269command="/home/someuser/rs ... -
sysctl优化设置
2010-09-05 11:25 1169sysctl 是一个用来在系统运作中查看及调整系统参数的工 ... -
proc文件系统
2010-09-05 11:22 1281什么是proc文件系统? proc文件系统是一个伪 ... -
nfs使用
2010-09-02 17:01 1159http://www.linuxhomenetworking. ... -
lsof example
2010-08-23 12:40 12781、查看文件系统阻塞 ...
相关推荐
在 Linux 下成功搭建起 Postfix 服务器需要完成以下几个步骤:安装 Postfix、配置 main.cf 文件、添加 DNS 服务器和测试 Postfix。 一、安装 Postfix 首先,需要卸载 sendmail 相关的所有服务,执行以下命令:sudo...
程序文件位于/usr/libexec/postfix,邮件队列文件位于/var/spool/postfix,而管理工具位于/usr/sbin/,如Postalias、Postconf、Postfix、Postmap、Postqueue和Postsuper,它们分别用于管理别名表、配置文件、服务启...
postfix邮件系统原理postfix邮件系统原理postfix邮件系统原理
6. **队列管理器**(qmgr):管理邮件队列,确保邮件按顺序处理并避免拥塞。 在安全方面,Postfix支持多种防止垃圾邮件和欺诈邮件的技术,如SPF(Sender Policy Framework)、DKIM(DomainKeys Identified Mail)和...
Squirrelmail则是一款基于Web的邮件客户端,可以让你通过浏览器访问和管理邮件。它提供了一个直观的界面,用户可以在任何有网络连接的地方登录并读写邮件。为了提高安全性,使用HTTPS连接来访问Webmail是非常推荐的...
在本文中,我们将深入探讨如何搭建一个基于Postfix的邮件服务器,并结合Cyrus-IMAP、Cyrus-SASL、MySQL以及IMP等组件,构建一个完整的邮件系统。Postfix是一个广泛使用的开源邮件传输代理,它以其稳定性和高效性而...
首先,安装Postfix邮件服务器通常可以通过包管理器如`yum`进行,命令为`yum -y install postfix*`。安装完成后,需要配置Postfix以适应你的网络环境,这包括设置主机名和域名,并配置邮件路由。然后,通过`service ...
2. **Apache安装配置**:Apache可能是为了提供Webmail服务,如Webmin,用来远程管理邮件服务器。 3. **MySQL安装配置**:MySQL用于存储用户认证信息和其他数据库需求。 4. **courier-authlib安装配置**:提供身份...
### Postfix邮件服务器配置详解与错误解析 #### 一、所需软件 为了搭建Postfix邮件服务器,我们需要准备一系列软件,并确保它们能够协同工作。以下是所需的软件列表及其在邮件服务器中的作用: 1. **CentOS 5.6**...
接下来,设置PHPMyadmin来管理邮件用户的数据库。安装PHPMyadmin后,创建一个新的数据库,用于存储邮件用户信息。Postfix本身并不存储用户密码,而是依赖于外部认证机制,如 Cyrus SASL 或 MySQL。若使用MySQL,需要...
在管理方面,Postfix提供了丰富的命令行工具,如`postconf`用于查看和修改配置,`postfix start/stop/restart`用于控制服务状态,`postqueue`和`postfix flush`则帮助我们查看和管理邮件队列。了解这些工具的使用是...
**amavisd-new** 是一个接口程序,它连接了Postfix、ClamAV和SpamAssassin,提供了一种高效的方式在邮件传递过程中执行这些安全检查。 **安装步骤:** 1. 更新系统并安装基础软件包。 2. 安装Apache、MySQL、PHP,...
标签中的"post"可能是指Postfix的命令行工具,如postconf用于查看或修改Postfix配置,postqueue用于查看邮件队列,postdrop用于创建新的邮件,等等。这些工具帮助管理员管理Postfix的运行状态。 在实际应用中,...
- **IMAP协议(Internet Message Access Protocol)**: IMAP是一种比POP3更先进的邮件接收协议,它允许用户在服务器上管理邮件而不仅仅是下载它们。IMAP使用TCP端口143。 - **DNS协议(Domain Name System)**: DNS...
6. `squirrelmail-1.4.13.tar.bz2`:Web界面邮件管理程序,用户可以通过浏览器查看和管理邮件。 7. `extman-1.1.tar.gz` 和 `extmail-1.2.tar.gz`:邮件后台管理程序,用于系统管理员对邮件服务器进行管理和监控。 8...
5. **Postfix (2.6.5)** - 邮件服务器主程序。 - 下载地址: [Postfix](http://down1.chinaunix.net/distfiles/postfix-2.6.5.tar.gz) 6. **Courier Authlib (0.62.4)** - 与Cyrus SASL一起进行身份验证。 - 下载...
Postfix 是一款开源的邮件传输代理(MTA),被广泛用于搭建邮件服务器,提供电子邮件的发送和接收功能。本文档将介绍如何从零开始安装和配置 Postfix 邮件系统,适合初学者入门。 首先,为了邮件系统的正常运行,...
队列管理 qmgr的运行原理 队列管理工具 第六章 E-mail与DNS DNS概论 决定邮件路由 Postfix与DNS 常见问题 第七章 本地投递与 POP/IMAP Postfix的投递代理程序 邮箱格式 本地邮件的投递操作 POP与IMAP 本地邮件传输...