Qmail 的配置文件是由多个文件组成的,不是集中在一个文件中。每个文件控制相应部分的功能和属性,一个可执行程序可能有多个配置文件控制,所有的配置文件共同决定了 qmail 运行的实现和模式。这些配置文件都在 qmail 的 control 目录中,即位于 /var/qmail/control 目录中。
badmailfrom
这个配置文件是控制邮件系统拒绝接收的邮件地址和邮件域,主要是为了防止垃圾邮件。如果一个邮件地址或者邮件域被列入到这个文件中,系统就会拒绝接收这个邮件地址发来的邮件,或者拒绝邮件域下所有邮件地址发来的邮件。不过这个配置文件只是一般的垃圾邮件防范手段,对于比较全面的垃圾邮件过滤技术还要靠第三方软件来实现。该文件的格式如下:
11@11.com //拒绝这个地址发来的邮件
22@2w.com
@33.com //拒绝这个邮件域下的所有帐号发来的邮件
@44.com
boucefrom
bouceform 是定义当邮件投递失败时系统返回给发送者一个包含失败信息的邮件时的发送者。如果不存在这个文件,默认的发送者是 MAILER-DAEMON。比如
echo postmaster /var/qmail/control/bouncefrom
就是定义投递者为 postmaster,这样所有投递失败的返回邮件的发送者就成了 postmaster。
concurrencylocal
这个文件定义了 qmail 可以同时投递的本地邮件的个数。这个参数的缺省值是 10,也就是说系统允许同时有 10 个邮件在本地投递。 concurrencylocal 这个参数的最大值是由编译时的conf-spawn参数来决定的,缺省值是120,最大值是255。
concurrencyremote
这个参数定义了 qmail 可以同时投递的远端邮件的个数,这个参数的缺省值是 20。这个参数的最大值也是由 conf-spawn 来决定的。
defaultdomain
它主要用于邮件用户在投递给同一邮件服务器的邮件用户时的邮件投递处理。
比如邮件服务器 ehuilong.com 的用户 user 发送邮件给另一个邮件用户 user1@ehuilong,这时 qmail-inject 会将 defaultdomain 中定义的邮件域名加入到这个邮件的目标地址中, qmail 会自动认为这个邮件的目标地址是 user1@ehuilong.com,并按照这个地址进行投递。当这个文件不存在的时候,qmail 会从配置文件 me 中读取这个参数。如果系统变量 DEFAULTDOMAIN 已经设置,defaultdomain 定义的参数将被忽略。
defaulthost
它和 defaultdomain 类似,当邮件系统接收到没有目标主机名的邮件时,这个设置文件定义了系统往这个邮件中加入的目标主机名名称。
在缺省情况下,qmail-inject 会将 defaulthost 中定义的名称加入到没有定义投递邮件地址的邮件的目标主机名中。如果 defaulthost 不存在,加入的目标主机名将是字符串“defaulthost”。 defaulthost 主要用于邮件用户在投递给同一邮件服务器的邮件进行投递处理。如果系统变量 QMAILDEFAULTHOST 已经设置,defaulthost 定义的参数将被忽略。
databyes
它定义了 qmail-smtpd 所允许接收的邮件的最大字节数。
这个参数的缺省值为 0,表示对接收邮件的字节数没有限制。如果要限制最大的接收为 10M,操作如下:
echo 10485760 /var/qmail/control/databytes
这是任何大于 10M 的邮件都会被拒绝。这个参数最好设置上,以避免恶意的对你服务器发送大量的超大邮件,产生邮件服务器负荷过大,甚至系统崩溃的危险。
doublebouncehost
这个配置文件定义了出现“双重反弹”的时候,系统转发的邮件的主机名称。
“双重反弹”就是当系统因为投递失败将邮件返回给发送者时,发送者又将此邮件返回,这个时候 qmail 将会把这个邮件转发到另一个邮件地址,一般这个地址就是管理员的地址。 doublebouncehost 就是定义这个转发的邮件地址的主机名部分,而这个邮件地址的用户名部分是由 doublebouceto 来定义的,因此这两个配置文件一般都是结合起来使用的。当 doublebouncehost 不存在的时候,系统将会从配置文件 me 中读取这个参数。
doublebounceto
这个参说是结合blebouncehost来使用的,当这个参数不存在的时候,系统缺省值是postmaster用户。
helohost
这个配置文件定义了当程序 qmail-remote 和远程邮件系统建立连接时所使用的主机名。
如果这个配置文件不存在,系统将会从配置文件 me 中读取这个参数值,如果 me 不存在,qmail-remote 将不能正常运行工作。
locals
这个配置文件是定义本地邮件域的。
在 qmail-send 处理邮件投递时,将会使用 locals 定义的值和邮件的目标地址进行比较。如果相同,系统就会将这个邮件投递到本地交给 qmail-lspawn 来处理;如果一个邮件的目标主机名在 locals 中找不到,系统将会把这个邮件投递到远端邮件服务器系统,即使这个邮件的目标地址可能是本地邮件系统的。如果 locals 不存在,系统将会从配置文件 me 中读取这个参数,如果 me 不存在,qmail-send 将不能正常运行。
me
这个配置文件是 qmail 系统十分重要的一个文件,如果这个文件不存在,qmail 系统将无法运行。
me 是用来定义本地邮件服务器的主机名的。上面已经介绍到了,有多个配置文件是和 me 有关联的。如果那些配置文件不存在,系统默认会从 me 中读取参数值的。me 这个配置文件一般都是在 qmail 系统安装时使用 configure-fast 来创建的。
queuelifetime
这个配置文件是定义一个邮件在邮件队列中存活的时间。
缺省值为 7 天(604800s),这个期限掉了以后 qmail-send 将会进行最后一次的投递尝试,如果投递失败,该邮件将会从邮件队列中删除。
rcphosts
这个配置文件也是 qmail 一个十分重要的文件,这个文件是定义系统允许转发邮件的邮件域。
如果这个文件不存在或者为空,你的系统将会接收 Internet 上所有的域的邮件转发,即你的系统是 Open relay。配置文件 rcpthosts 最多可以支持 50 个主机名和域名。如果超个这个数字,就需要保存到他的扩充配置文件 morercphosts 中,然后使用 qmail 的命令程序 qmail-newmrh (该文件一般在 /var/qmail/bin 目录下)来生成二进制的 morercpthosts.cdb 文件,这样 qmail-smtpd 才可以从这个二进制文件中读取信息。
virtualdomains
这也是 qmail 的一个非常重要的配置文件,它定义了 qmail 的虚拟邮件域,qmail 结合 vpopmail 的虚拟域管理功能可以定义多个虚拟邮件域。
smtproutes
这个配置文件是定义 qmail 邮件系统的静态 SMTP 路由表信息的,其格式应该是:
HOST: targetHOST //HOST可以是主机名或者域名。
//这行所表示的是意思是将所有目标是 HOST 的邮件转发到 targetHOST 邮件服务器中,这个是最常规的表示方式。
下面给一些例子和一些特殊的表示方法:
ehuilong.com.cn:ehuilong.com
//这行表示的意思是将所有发往 ehuilong.com.cn 的邮件全部转发到 ehuilong.com 这个邮件服务器。
//qmail 不会在 ehuilong.com.cn 邮件服务器中投递时查询 DNS 中的 MX 记录,直接投递到 ehuilong.com 邮件服务器中,加快了投递的速度。
.ehuilong.net:
//这行表示强迫 qmail 对 DNS 的 MX 记录进行查询,因为没有定义转发的主机名,qmail 将在 DNS 中查询任何以 .ehuilong.net 结尾的邮件服务器
:mail.ehuilong.com.cn:2525
//这行定义表示所有发往该机器的所有邮件都将会转发到 mail.ehuilong.com.cn 这个邮件服务器,并且转发到对方的 2525 端口,这个方式一般都是做邮件网关时用的到的。
注意:smtproutes 如果设置不正确或者 DNS 的变动会产生邮件的循环投递。
timeoutconnect
这个配置文件定义了qmail-remote 在和远端 SMTP 服务器在 SMTP 连接断开以前接受一个新的连接等待的最大时间(单位为秒s)。
默认值为一分钟(60s)。如果你的网络连接速率比较低,就需要相应的调整这个参数到一个适合的值。
timeoutremote
这个配置文件定义了 qmail-remote 等待远端的 SMTP 服务器相应时等待的最大时间。
默认值为 20 分钟(1200s),如果到达这个最大值没有响应,qmail 才和对方断开连接并且把失败的记录写到 qmail 的日志中。
smtpgreeting
这个配置文件定义了用户在登录 SMTP 服务时显示的系统欢迎信息。修改这个信息可以掩盖一些你的系统的本身的信息,可以相对的迷惑一下登录者。 ,