Qmail相关的FAQ
时间:2006-08-27 来源:linux6
本帖收集论坛内的Qmail相关的FAQ。
抄袭无双的话,“在论坛的回答中有许多好的回答,但是如果每一个都要写到精华的话
那么精华又未免太多了”;同时也为了避免各位重复讨论相同的小问题,我就整理了这篇文档。
另外,涉及的方面太多,我不可能一一尝试,如有谬误,请不吝赐教。
建议大家把自己认为好的回答写到这个帖子的回复中,并写上讨论的帖子连接
准备分几个部分。
第一部分:MTA
第二部分:igenus
第三部分: sqwebmail
第四部分: vpopmail + qmailadmin
各位还可以补充。
我们会定期将各位提供的FAQ和论坛上的好东西整理进去,并为各位作者署名。
第一部分:MTA
1: 怎么加快 qmail 投递邮件速度?
A: /var/qmail/control下面是qmail的控制文件,这两个文件:
Concurrentcylocal default: 10 最大本地同时传送数
Concurrencyremote default: 20 最大远程同时传送数
2: Qmail的主要配置文件有哪些?
A: http://chinaunix.net/forum/viewtopic.php?t=1126
3: qmail+LDAP安装配置方法? (netloafer)
A: http://chinaunix.net/forum/viewtopic.php?t=1119
4
mail如何限制附件的大小呢??
A:
在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。
smtp方式是以qmail的databytes作限制的
5: 用qmail怎么封mailfrom? (peng)
A:使用qmail控制文件封整个域或邮件地址
vi/var/qmail/control/badmailfrom
这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。
例如:
[email protected]-----限制一个特定的用户
@sina.com----限制整个域中的邮件
B:使用tcprules规则文件封IP地址(gadfly)。
#网段
10.10.10.:deny
#ip
10.10.10.1:deny
重新生成cdb文件就好了
6. 如何让队列中的邮件马上传递? (peng)
A:
# kill -HUP qmail-send
要删除队列中的邮件
1) 停止QMAIL
2) mv /var/qmail/queue/lock /var/qmail/;find /var/qmail/queue/ -type f -exec rm {} \; ;mv /var/qmail/lock /var/qmail/queue/
3) 重启QMAIL.
队列中的邮件包含在以下目录中 /var/qmail/queue/{info,mess,remote,local}/hash/#number
7、在邮件队列中快速删除从一个地方发过来但又不存在的邮件? (peng)
A:
设bad.jite.com是这个域。可以键入以下命令
# echo # >; ~alias/.qmail-baddomain-default
# echo bad.jite.com:alias-baddomain>;>; /var/qmail/control/virtualdomains
# echo bad.jite.com:127.0.0.1 >;>; /var/qmail/control/smtproutes
然后运行/var/qmail/bin/qmail-tcpok,给qmail-send 一个HUP信号
8、如何删除队列中的大量广告信息? (peng)
A:
先停止QMAIL.
1) 停止qmail, qmail-smtpd
2) 在以下默认目录下 /var/qmail/queue/mess
find . -type f -exec grep "^Subject:" {} \; -print -exec rm {} \;
3) 运行queue-fix清除相关文件,
4) 重启qmail.
9、rh9下编译qmail出错:
./load auto-str substdio.a error.a str.a
substdio.a(substdo.o)(.text+0x43): In function `allwrite':
: undefined reference to `errno'
collect2: ld returned 1 exit status
make: *** [auto-str] Error 1
什么问题?(microcao &linuxsky)
A: errno 这个错误是因为 RH9 系统使用了新的 GLIBC 库 2.3.1 造成的
需要修改 QMAIL 的代码才能编译另外 DJB 的几乎所有程序都存在这个问题
QMAIL 官方已经提供了推荐的补丁
http://www.qmail.org/top.html#patches
打个这个补丁就行了
http://qmail.mirrors.space.net/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
至于tcpserver可能也有相同的问题,patch都可以在以下目录找到
http://qmail.mirrors.space.net/moni.csi.hu/pub/glibc-2.3.1/
10:Apr 7 17:52:15 www qmail: 1049709135.048259 delivery 38: deferral: Uh-oh:_home_directory_is_writable._(#4.7.0)如何解决?
A:需要将用户的邮件目录修改为700
由于vpopmail利用的是wildcard方式匹配的,所以homedir必须从domain的目录开始。假设[email protected]目录是/home/vpopmail/domains/test.com/gadfly/
这样修改属性:
cd /home/vpopmail/domains/;chmod 700 test.com test.com/gadfly test.com/gadfly/Maildir/
11:.qmail file is writable错误如何解决?(xmy)
A:用户目录下的.qmail文件组和其它用户属性不能可写。
至于vpopmail方式, 域目录下的.qmail-*必须去掉写属性
chmod go-w .qmail-*
或者
chmod 600 .qmail-*
此外还需注意的文件属性有libmysqlclient.so.10.0.0
chmod 755 /usr/lib/libmysqlclient.so.10.0.0
12: 每发完一封
邮件后都会自动回复一封内容大概就是说发不出去的意思。自动回复的信件内容是这样的
.....
<log@yourdomain>;:
Sorry, no mailbox here by that name. vpopmail (#5.1.1)
A:你的qmail是用新的iceblood版本安装的吧。
这个版本的qmail,缺省情况下,每封出入的信件都会发到log用户。
如果想禁止这个动作,需要替换qmail-queue.
将extra.h中的
#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN 5
改成
#define QUEUE_EXTRA ""
#define QUEUE_EXTRALEN 0
重编译替换qmail-queue就好了。
具体见life with qmail 的E.3
如果想把进出的邮件都复制一份给一个特定的用户,反过来修改就行了.
抄袭无双的话,“在论坛的回答中有许多好的回答,但是如果每一个都要写到精华的话
那么精华又未免太多了”;同时也为了避免各位重复讨论相同的小问题,我就整理了这篇文档。
另外,涉及的方面太多,我不可能一一尝试,如有谬误,请不吝赐教。
建议大家把自己认为好的回答写到这个帖子的回复中,并写上讨论的帖子连接
准备分几个部分。
第一部分:MTA
第二部分:igenus
第三部分: sqwebmail
第四部分: vpopmail + qmailadmin
各位还可以补充。
我们会定期将各位提供的FAQ和论坛上的好东西整理进去,并为各位作者署名。
第一部分:MTA
1: 怎么加快 qmail 投递邮件速度?
A: /var/qmail/control下面是qmail的控制文件,这两个文件:
Concurrentcylocal default: 10 最大本地同时传送数
Concurrencyremote default: 20 最大远程同时传送数
2: Qmail的主要配置文件有哪些?
A: http://chinaunix.net/forum/viewtopic.php?t=1126
3: qmail+LDAP安装配置方法? (netloafer)
A: http://chinaunix.net/forum/viewtopic.php?t=1119
4

A:
在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。
smtp方式是以qmail的databytes作限制的
5: 用qmail怎么封mailfrom? (peng)
A:使用qmail控制文件封整个域或邮件地址
vi/var/qmail/control/badmailfrom
这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。
例如:
[email protected]-----限制一个特定的用户
@sina.com----限制整个域中的邮件
B:使用tcprules规则文件封IP地址(gadfly)。
#网段
10.10.10.:deny
#ip
10.10.10.1:deny
重新生成cdb文件就好了
6. 如何让队列中的邮件马上传递? (peng)
A:
# kill -HUP qmail-send
要删除队列中的邮件
1) 停止QMAIL
2) mv /var/qmail/queue/lock /var/qmail/;find /var/qmail/queue/ -type f -exec rm {} \; ;mv /var/qmail/lock /var/qmail/queue/
3) 重启QMAIL.
队列中的邮件包含在以下目录中 /var/qmail/queue/{info,mess,remote,local}/hash/#number
7、在邮件队列中快速删除从一个地方发过来但又不存在的邮件? (peng)
A:
设bad.jite.com是这个域。可以键入以下命令
# echo # >; ~alias/.qmail-baddomain-default
# echo bad.jite.com:alias-baddomain>;>; /var/qmail/control/virtualdomains
# echo bad.jite.com:127.0.0.1 >;>; /var/qmail/control/smtproutes
然后运行/var/qmail/bin/qmail-tcpok,给qmail-send 一个HUP信号
8、如何删除队列中的大量广告信息? (peng)
A:
先停止QMAIL.
1) 停止qmail, qmail-smtpd
2) 在以下默认目录下 /var/qmail/queue/mess
find . -type f -exec grep "^Subject:" {} \; -print -exec rm {} \;
3) 运行queue-fix清除相关文件,
4) 重启qmail.
9、rh9下编译qmail出错:
./load auto-str substdio.a error.a str.a
substdio.a(substdo.o)(.text+0x43): In function `allwrite':
: undefined reference to `errno'
collect2: ld returned 1 exit status
make: *** [auto-str] Error 1
什么问题?(microcao &linuxsky)
A: errno 这个错误是因为 RH9 系统使用了新的 GLIBC 库 2.3.1 造成的
需要修改 QMAIL 的代码才能编译另外 DJB 的几乎所有程序都存在这个问题
QMAIL 官方已经提供了推荐的补丁
http://www.qmail.org/top.html#patches
打个这个补丁就行了
http://qmail.mirrors.space.net/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
至于tcpserver可能也有相同的问题,patch都可以在以下目录找到
http://qmail.mirrors.space.net/moni.csi.hu/pub/glibc-2.3.1/
10:Apr 7 17:52:15 www qmail: 1049709135.048259 delivery 38: deferral: Uh-oh:_home_directory_is_writable._(#4.7.0)如何解决?
A:需要将用户的邮件目录修改为700
由于vpopmail利用的是wildcard方式匹配的,所以homedir必须从domain的目录开始。假设[email protected]目录是/home/vpopmail/domains/test.com/gadfly/
这样修改属性:
cd /home/vpopmail/domains/;chmod 700 test.com test.com/gadfly test.com/gadfly/Maildir/
11:.qmail file is writable错误如何解决?(xmy)
A:用户目录下的.qmail文件组和其它用户属性不能可写。
至于vpopmail方式, 域目录下的.qmail-*必须去掉写属性
chmod go-w .qmail-*
或者
chmod 600 .qmail-*
此外还需注意的文件属性有libmysqlclient.so.10.0.0
chmod 755 /usr/lib/libmysqlclient.so.10.0.0
12: 每发完一封
邮件后都会自动回复一封内容大概就是说发不出去的意思。自动回复的信件内容是这样的
.....
<log@yourdomain>;:
Sorry, no mailbox here by that name. vpopmail (#5.1.1)
A:你的qmail是用新的iceblood版本安装的吧。
这个版本的qmail,缺省情况下,每封出入的信件都会发到log用户。
如果想禁止这个动作,需要替换qmail-queue.
将extra.h中的
#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN 5
改成
#define QUEUE_EXTRA ""
#define QUEUE_EXTRALEN 0
重编译替换qmail-queue就好了。
具体见life with qmail 的E.3
如果想把进出的邮件都复制一份给一个特定的用户,反过来修改就行了.
CODE:
[Copy to clipboard]
将extra.h中的
#define QUEUE_EXTRA ""
#define QUEUE_EXTRALEN 0
改成
#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN sizeof(QUEUE_EXTRA) 把log改成你需要copy到的用户,重新编译qmail-queue就ok了。
13.客户端发信,报错如下:
553sorry,that domain isn't in my list of allowed rcpthosts (5.7.1)
怎么解决?
A:
smtp server需要auth么?
判断方法如下:
telnet localhost 25
ehlo gadfly
如果显示有Auth....,就是需要Auth的。
如果需要,客户端是否配置auth了。如果没有,发往外域,就是这个错。
如果不需要,客户端的mailfrom是否是/var/qmail/control/rcpthosts中配置的域,如果不是,就是这个错.
14.发信有问题?如何检查SMTP服务是否有问题?是否启动了?
A:最好的办法就是直接连接smtp服务,如下:
telnet your_server_ip 25
用smtp命令去测试,具体的命令使用,参见
http://www.chinaunix.net/forum/viewtopic.php?t=77544
15.每次客户端发信时,qmail总要试图连接客户端113端口,从而导致发现过程缓慢 在网上查到说,关掉Auther Idnet可以解决,但应该怎样做呢?
A: tcpserver的命令行加上 -H -R就好了
16.配一台qmail服务器,不管to的地址是什么,都转发到另一台SMTP服务器这个时候Qmail该如何设置呢??
A:可以利用smtproutes
rainbow.linuxfane.com:mail8.rainbow.jp
:fw.rainbow.linuxfane.com:8088
第一行的存在会将发给rainbow.linuxfane.com的邮件重定向到mail8.rainbow.jp主机
第二行的存在会将任何不符合之前行条件的邮件重定向到fw.rainbow.linuxfane.com的8088端口,让
邮件安全的穿越防火墙
另外,注意,如果不想收任何域的信件,virtualdomains也必须置空。
17.smtp 使用auth patch后,出现以下一些问题:
a.加认证报out of memory, 不加就过了。
b. 如果带域名,正常;不带,报auth failure
c.随便输入什么用户名密码都能过。
怎么解决?
A:参看http://www.chinaunix.net/forum/viewtopic.php?t=68469
如果还是不行,建议换另外一个试试
18. qmail中如何清空队列(queue)中的所有消息?
A:find /var/qmail/queue/ -type f -a -name [1-9]* -exec rm {} \;
19. solaris下编译ezmlm的时候,错误提示是/usr/include/time.h
出现getdate错误,请问因该如何解决?(agang)
A: 这是ezmlm的一个bug,只在solaris下编译才出现:
把第885和第1869行的修改:
885 void getdate(struct msginfo *infop,int flagfail)
1869 getdate(infop,0);
为:
885 void ezmlmgetdate(struct msginfo *infop,int flagfail)
1869 ezmlmgetdate(infop,0);
就可以编译通过了。
20.在REDHAT9.0下安装qmail,POP3或smtp非常慢,为什么?
A: pop或smtp的脚本中,tcpserver命令行中加上-H -R -l 0参数,防止客户端域名反查,用户indent反查和本地域反查。
21.这段日志是什么意思?第一列比如 “@400000003f53417b37a114cc ”代表什么意思啊?
我能直接转换成具体的时间吗?比如某年某月某日某分某秒吗??
或者是像 messages 那样表示时间?
#define QUEUE_EXTRA ""
#define QUEUE_EXTRALEN 0
改成
#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN sizeof(QUEUE_EXTRA) 把log改成你需要copy到的用户,重新编译qmail-queue就ok了。
13.客户端发信,报错如下:
553sorry,that domain isn't in my list of allowed rcpthosts (5.7.1)
怎么解决?
A:
smtp server需要auth么?
判断方法如下:
telnet localhost 25
ehlo gadfly
如果显示有Auth....,就是需要Auth的。
如果需要,客户端是否配置auth了。如果没有,发往外域,就是这个错。
如果不需要,客户端的mailfrom是否是/var/qmail/control/rcpthosts中配置的域,如果不是,就是这个错.
14.发信有问题?如何检查SMTP服务是否有问题?是否启动了?
A:最好的办法就是直接连接smtp服务,如下:
telnet your_server_ip 25
用smtp命令去测试,具体的命令使用,参见
http://www.chinaunix.net/forum/viewtopic.php?t=77544
15.每次客户端发信时,qmail总要试图连接客户端113端口,从而导致发现过程缓慢 在网上查到说,关掉Auther Idnet可以解决,但应该怎样做呢?
A: tcpserver的命令行加上 -H -R就好了
16.配一台qmail服务器,不管to的地址是什么,都转发到另一台SMTP服务器这个时候Qmail该如何设置呢??
A:可以利用smtproutes
rainbow.linuxfane.com:mail8.rainbow.jp
:fw.rainbow.linuxfane.com:8088
第一行的存在会将发给rainbow.linuxfane.com的邮件重定向到mail8.rainbow.jp主机
第二行的存在会将任何不符合之前行条件的邮件重定向到fw.rainbow.linuxfane.com的8088端口,让
邮件安全的穿越防火墙
另外,注意,如果不想收任何域的信件,virtualdomains也必须置空。
17.smtp 使用auth patch后,出现以下一些问题:
a.加认证报out of memory, 不加就过了。
b. 如果带域名,正常;不带,报auth failure
c.随便输入什么用户名密码都能过。
怎么解决?
A:参看http://www.chinaunix.net/forum/viewtopic.php?t=68469
如果还是不行,建议换另外一个试试
18. qmail中如何清空队列(queue)中的所有消息?
A:find /var/qmail/queue/ -type f -a -name [1-9]* -exec rm {} \;
19. solaris下编译ezmlm的时候,错误提示是/usr/include/time.h
出现getdate错误,请问因该如何解决?(agang)
A: 这是ezmlm的一个bug,只在solaris下编译才出现:
把第885和第1869行的修改:
885 void getdate(struct msginfo *infop,int flagfail)
1869 getdate(infop,0);
为:
885 void ezmlmgetdate(struct msginfo *infop,int flagfail)
1869 ezmlmgetdate(infop,0);
就可以编译通过了。
20.在REDHAT9.0下安装qmail,POP3或smtp非常慢,为什么?
A: pop或smtp的脚本中,tcpserver命令行中加上-H -R -l 0参数,防止客户端域名反查,用户indent反查和本地域反查。
21.这段日志是什么意思?第一列比如 “@400000003f53417b37a114cc ”代表什么意思啊?
我能直接转换成具体的时间吗?比如某年某月某日某分某秒吗??
或者是像 messages 那样表示时间?
QUOTE:
@400000003f304780381352e4 tcpserver: status: 0/40
@400000003f3631091d390694 tcpserver: status: 0/40 A:
这是tai64格式的时间。 具体的描述见http://cr.yp.to/daemontools/tai64n.html
你可以用
tai64nlocal <log
来显示可读的时间
22.sina的mail问题,给新浪发信出现一下错误,如何解决?(artxing)
@400000003f3631091d390694 tcpserver: status: 0/40 A:
这是tai64格式的时间。 具体的描述见http://cr.yp.to/daemontools/tai64n.html
你可以用
tai64nlocal <log
来显示可读的时间
22.sina的mail问题,给新浪发信出现一下错误,如何解决?(artxing)
CODE:
[Copy to clipboard]
553 Domain information in your 'HELO' dialog is not in the stadand format reque
sted by RFC 821 and RFC 1035, please send your correct domain information accord
ingly. 您的IP为国内IP,且与您的MTA服务器IP信息不符!Please contact our mail serv
ice engineers on [email protected]. if you have other problems, or anyt
hing disallowed by our system.. --------------------------------------------您会
话中的helo没有按照RFC 821 RFC 1035的标准,发送您正确的domain信息。Your IP addres
s belonging to domestic domain, and your IP informaiton dismatch with the inform
ation provided by the MTA server 如果存在其他问题或者不符合我们屏蔽要求,请发信
到[email protected] A:
echo "我的邮件服务器的真实域名(A记录)" >; /var/qmail/control/helohost
23.qmail下smtp不能发信,telnet也不成?
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
(wjger)
A:
检查vchkpw, tcp.smtp.cdb文件的属性是否正确。
主要是在编译过程中,不知为何tcp.smtp.cdb 丢失。另外还有一个体会是 mysql 中的grantq权限设置中的域名(vpopmail@localhost)应该和vmysql.h中的mysql服务器名是一致的。否则会造成vadddomain 拒绝连接失败的现象!!
第三部分: sqwebmail
1. 升级sqwebmail的注意事项? (redfox)
A: 升级好后最好把qmail停止,把authdaemond重启动
/usr/local/qmail/webmail/libexec/authlib/authdaemond stop
/usr/local/qmail/webmail/libexec/authlib/authdaemond start
然后再启动qmail,不然会出现一些莫名其妙的问题
2.sqwebmail如何限制附件大小啊?(lovecelery)
A: 我想把附件大小设成4M,但是默认是2M,方法如下:
在configure的时候指定
--with-maxformargsize=4194304 --with-maxmsgsize=4194304
就可以了
--with-maxformargsize是允许上传的附件大小,不包含邮件正文的, --with-maxmsgsize是全部邮件的大小,正文+附件的
3.如果我们有默认域,可以凭用户名和密码直接登陆,但是登录后往往出现
[email protected],而不是你所想要的[email protected],
怎么解决?(oranger2001)
sted by RFC 821 and RFC 1035, please send your correct domain information accord
ingly. 您的IP为国内IP,且与您的MTA服务器IP信息不符!Please contact our mail serv
ice engineers on [email protected]. if you have other problems, or anyt
hing disallowed by our system.. --------------------------------------------您会
话中的helo没有按照RFC 821 RFC 1035的标准,发送您正确的domain信息。Your IP addres
s belonging to domestic domain, and your IP informaiton dismatch with the inform
ation provided by the MTA server 如果存在其他问题或者不符合我们屏蔽要求,请发信
到[email protected] A:
echo "我的邮件服务器的真实域名(A记录)" >; /var/qmail/control/helohost
23.qmail下smtp不能发信,telnet也不成?
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
(wjger)
A:
检查vchkpw, tcp.smtp.cdb文件的属性是否正确。
主要是在编译过程中,不知为何tcp.smtp.cdb 丢失。另外还有一个体会是 mysql 中的grantq权限设置中的域名(vpopmail@localhost)应该和vmysql.h中的mysql服务器名是一致的。否则会造成vadddomain 拒绝连接失败的现象!!
第三部分: sqwebmail
1. 升级sqwebmail的注意事项? (redfox)
A: 升级好后最好把qmail停止,把authdaemond重启动
/usr/local/qmail/webmail/libexec/authlib/authdaemond stop
/usr/local/qmail/webmail/libexec/authlib/authdaemond start
然后再启动qmail,不然会出现一些莫名其妙的问题
2.sqwebmail如何限制附件大小啊?(lovecelery)
A: 我想把附件大小设成4M,但是默认是2M,方法如下:
在configure的时候指定
--with-maxformargsize=4194304 --with-maxmsgsize=4194304
就可以了
--with-maxformargsize是允许上传的附件大小,不包含邮件正文的, --with-maxmsgsize是全部邮件的大小,正文+附件的
3.如果我们有默认域,可以凭用户名和密码直接登陆,但是登录后往往出现
[email protected],而不是你所想要的[email protected],
怎么解决?(oranger2001)
相关阅读 更多 +