qmail技巧文章(1)

12/3/2006来源:Qmail人气:6338

Qmail如何把该本地传送的邮件投递到其他主机

Qmail如何使一个用户能使用多个域

Qmail如何设置把无法识别接受者的邮件转给其他主机

Qmail如何设置接收发给其他主机的信件

Qmail如何做用户伪装

Qmail如何做域名伪装

Qmail如何设置邮件路由

Qmail如何设置一个简单的邮件列表

Qmail日志中为什么会出现"CNAME lookup failed temporarily"

Qmail如何通过UUCP进行邮件外发

Qmail如何于PRocmail一起使用

Qmail如何设置一个虚拟域

1)在DNS中给disk.linuxaid.com.cn加了MX记录后,投递到linuxaid.com.cn的邮件都投递到磁盘服务器disk.linuxaid.com.cn,但是使用装了qmail的linuxaid.com.cn的本地用户user1发信给user2@linuxaid.com.cn的时候,linuxaid.com.cn会试图对信件进行本地传送,而不是发送出去,该如何解决。

1-1)从/var/qmail/control/locals文件里面删除linuxaid.com.cn,如果qmail-send进程还在运行的话,发送HUP信号给这个它。当时首先要确认disk.linuxaid.com.cn能收到发给linuxaid.com.cn的信。

2)运行qmail的机器linuxaid.com.cn又加入了一个域名virtual.com,user1想使用其他的虚拟域virtual.com,同时又想使linuxaid.com.cn和virtual.com上面的信件分开,如何做能解决这个问题而且不用另外开个帐号呢?

2-1)在control/virtualdomains中加入两行:
virtual.com:user1-virtual
linuxaid.com.cn:user1-linuxaid
同时在control/rcpthosts中加入virtual.com和linuxaid.com.cn。
如果qmail-send还在运行,发送一个HUP信号给它。
现在user1可以设置两个分开的.qmail-virtual-*和linuxaid-*文件。他甚至可以设置.qmail-virtual-default和.qmail-linuxaid-default。

3)如果我在运行qmail的linuxaid.com.cn主机上接收到无法识别接收者的邮件后,想把他发送给test.linuxaid.com.cn处理,该如何?

3-1)在~alias/.qmail-default中加入:
| forward "$LOCAL"@test.linuxaid.com.cn

4)我有一台磁盘服务器,域名是disk.linuxaid.com.cn,但是我想让它能接收发送给linuxaid.com.cn的信件。我已经在DNS服务器上面把linuxaid.com.cn的MX记录指向disk.linuxaid.com.cn,如何才能让disk.linuxaid.com.cn把linuxaid.com.cn当成自己?

4-1)在/var/qmail/control/locals和/var/qmail/control/rcpthosts中添加linuxaid.com.cn,如果qmail-send进程仍然在运行,发送HUP信号给它。

5)比如test.linuxaid.com.cn上面的某个用户superuser想用superuser@linuxaid.com.cn而不是superuser@test.linuxaid.com.cn。

5-1)在环境变量中定义两个变量:
MAILHOST=linuxaid.com.cn
MAILUSER=superuser
为了重载用户的MUA自己补充的From语句,还必须在环境变量中加入:
QMAILINJECT=f
以上方法用在Linux环境下面的一些不能修改用户信息的MUA上,如果是windows系统的MUA,那么可以很容易改变用户信箱名。

6)所有的用户都在test.linuxaid.com.cn那么当user1发信给user2的时候消息头部想显示成"From: user1@linuxaid.com.cn"和"To: user2@linuxaid.com.cn",不显示test。

6-1)echo linuxaid.com.cn > /var/qmail/control/defaulthost
chmod 644 /var/qmail/control/defaulthost

7)比如我想把内部邮件服务器inside.linuxaid.com.cn上面的邮件全部转给能访问外部的邮件服务器outside.linuxaid.com.cn处理。

7-1)echo :bigbang.af.mil > /var/qmail/control/smtproutes
chmod 644 /var/qmail/control/smtproutes
同时停止qmail-smtpd服务。

8)比如要建立一个叫linux-sos@linuxaid.com.cn的邮件列表,那么首先要有linux这个邮件用户,然后在这个用户的主目录(~linux)下面建立一个.qmail-sos的文件,把所有要发送的人加入到这个文件中就可以了。如果要更强大的功能,建议使用ezmlm等软件。

9)日志显示有邮件由于这个原因延迟发送,但是qmail为什么会进行CNAME查找?

9-1)SMTP标准不允许机器别名,所以qmail不得不对每个接受主机在DNS上进行CNAME查找,如果接受主机相关的DNS服务器停止工作,那么qmail将延迟发送该信件,不久再进行尝试。

10)比如我需要qmail把所有外发邮件通过uucp发送给我的upstream UUCP站点gonzo。

10-1)echo :alias-uucp > /var/qmail/control/virtualdomains
然后在~alias/.qmail-uucp-default中放入如下内容(只有一行):
|preline -df /usr/bin/uux - -r -gC
-a"${SENDER:-MAILER-DAEMON}" gonzo!rmail "($DEFAULT@$HOST)"
有些uucp软件可能需要你把-df改成-d。
如果qmail-send还在运行中,发送HUP信号给它。

11)在~/.qmail中加入
| preline procmail
procmail可能不在缺省路径中,最好加上全路径。同时procmail缺省会尝试把信件发到/var/spool/mail/$USER,如果要解决这个问题,请参考INSTALL.mbox。

12)我想把所有发给virtual.com.cn的信件,包括root@virtual.com.cn和postermaster@virtual.com.cn以及其他邮件,都发送给user1,我该怎么做?我已经设置了MX记录。

12-1)在control/virtualdomains中加入:
virtual.com.cn:user1
在control/rcpthosts中加入virtual.com.cn
如果qmail-send在运行中,发送一个HUP信号给它。
现在所有发送给virtual.com.cn的信件都发送给了user1,user1可以设置~user1/.qmail-default来获得所有的信件,也可以设置~user1/.qmail-info来获得发送给info@virtual.com.cn的信件。
,