qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。qmail使用SMTP协议与其它系统上的MTA交换邮件。
目录
- 介绍
- 总体架构
-
简单配置及使用
- 目录
- 过程
- 启动设置
介绍
作为 Linux下面主流的邮件系统内核,大量著名的商业邮件系统都是在Qmail内核下开发,比如Hotmail 等。Qmail具有安装方便、 安全性高、邮件结构合理、 支持SMTP服务、队列管理、邮件反弹、基于域名的邮件路由、SMTP传输、转发和邮件列表、本地(邮件)传送、POP3 服务等强大的功能。它已经逐渐替代传统的Sendmail成为linux下邮件 系统内核的主流选择。qmail是面向安全而设计的,作者曾经悬赏500美元来找出qmail的安全漏洞,但是直到2006年,还是没有人能领取这笔奖金。
简单配置及使用
目录
qmail 安装部署 1
一、 准备工作 1
二、 LAMP残留(执行即可) 1
三、上传所需安装包 2
四、 检查DNS配置 2
五、 设置或关闭防火墙 2
六、 卸载已有的邮件系统 3
七、 解压缩netqmail-1.05.tar.gz 3
八、 安装daemontools 3
九、 安装ucspi-tcp 3
十、 创建所需的用户 4
十一、 准备安装qmail 4
十二、 qmail编译安装 5
十三、 设置管理员的邮箱地址 5
十四、 开启SPF设置 5
十五、 添加qmail的帮助手册 5
十六、 为qmail服务建立监控目录和日志文件 5
十七、 检查服务 6
十八、 安装vpopmail 7
十九、 检查服务 9
二十、 用POP3和SMTP测试 10
二十一、安装qmailadmin 14
过程
过程一:Qmail的安装。
1. 获得Qmail程序。
Qmail是自由软件,在Internet上可以获得它的源代码(C源代码)及基于各种平台和操作系统的二进制文件。二进制文件可以不须编译直接使用,但要注意选择与您的平台和操作系统版本一致的文件,否则可能不能使用。源代码可以在您的任何环境下工作(UNIX)但需要自己进行编译安装。这里我们选择源代码。从Internet上下载的源代码通常是以tar程序打的包然后再用压缩软件进行压缩。如:qmail-1.03.tar.gz 这里使用的是gzip进行压缩的(假设你的机器上已安装了gzip)。使用 gzip -d qmail-1.03.tar.gz 解压缩成qmail-1.03.tar 然后再用tar -xvf qmail-1.03.tar 解包成qmail-1.03目录。那么源代码文件均在此目录中了。
2. 编译安装Qmail。
Qmail源代码文件中有几个配置文件可以修改以适合您的环境。
conf-qmail :此文件包含Qmail的安装目录,默认值是 /var/qmail/
conf-users:此文件包含Qmail需要使用的用户,默认用户是 root,alias,(这两个用户在unix下应该已经由系统建立好了,下面的用户应该自己创)qmails,qmaid,qmaill, qmailr,qmailq,qma-ilp。
conf-groups:此文件包含Qmail 需要使用的组,默认的组为qmail(qmails,qmaild,qmaill,qmailr,qmailq,qmailp要属于此组)。
conf-cc:此文件包含Qmail使用的编译器,默认使用cc编译器,如须使用其它C编译器,应该将其替换为此编译器如 gcc.
conf-ld:此文件包含Qmail使用的编译器,默认使用cc编译器,如须使用其它C编译器,应该将其替换为此编译器如 gcc
在进行安装前系统应该已经安装了make命令。
定制好这些文件后,在/var/qmail/下使用命令:make。make命令将编译源代码、连接.obj 文件。如果此过程中断或出错,应参考上面配置文件正确与否。用户和组建立的正确与否。如果此过程没有问题使用命令:make check setup。此命令将安装所有文件到/var/qmail/(在执行此命令前先用 makedir /var/qmail 创建该目录)下。
另外需要安装checkpasswd,它的获得和安装和Qmail一样。此程序用于用户使用POP3协议收取邮件时对用户的密码验证。
过程二:Qmail的初级配置
Qmail安装好了以后将在/var/qmail/下生成若干文件和目录。
1.用vi 编辑器打开文件 /etc/inetd.conf,并在文件尾添加如下行:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env
tcp-env /var/qmail/bin/qmail-smtpd (和上面一行同在一行)
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup
qmail-popup yourname /bin/checkpassword
/var/qmail/bin/qmail-pop3d Maildir(和上面两行同在一行)
其中yourname是您的完整的Internet主机名,Maildir 是采用的邮箱格式(这里我们使用较流行的Maildir格式)
2.检查/etc/services文件中是否有如下两行,如没有则添加进去:
smtp 25/tcp mail
pop3 110/tcp # Post Office
3. DNS中有关Qmail的设置.
如果Qmail的邮件是与Internet上的其它邮件服务器交互的话(否则只能此服务器的邮件用户相互收发邮件了),还需要在DNS服务器中设置有关 Qmail的条目(如果使用别人的DNS服务器,应向DNS管理员申请添加条目)即添加一条关于邮件交换的条目(具体的设置请向DNS管理员咨询)
4. 控制文件的创建
Qmail的控制文件放在/var/qmail/control/下,如果不与Internet上的邮件服务器互传邮件的话,需要配置很多的文件。否则最简单的只需配置一个文件:me
它的内容是此邮件服务器的完整Internet主机名即:yourname
过程三:邮件用户的创建
邮件用户就是系统用户,所以您应该向系统添加用户,为了安全和管理的需要,最好创建一个E-mail用户组,将E-mail用户归属于此组,创建用户目录时最好在同一个文件系统下创建在同一个目录下(当然此文件系统不够大时可以创建在其它文件系统的某个目录下)
然后,在每个用户的初始目录下用命令:/var/qmail/bin/maildirmake创建邮箱目录并赋予适当的权限,您可以使用Shell脚本来完成每个用户邮箱的创建,下面是此脚本的一个简单的例子:
if test $1
then
echo "Creating $1's directory and file..."
useradd -d /usr/email-users/$1 -g emusers -s /bin/passwd $1
cd /usr/email-users/
mkdir $1
chown $1 $1
cd $1
/var/qmail/bin/maildirmake Maildir
echo ./Maildir/ > .qmail
chown $1 Maildir
chown $1 Maildir/*
chown $1 .qmail
echo "Please input $1's email password"
passwd $1
echo "$1's account has been created!!!"
else
echo "Please input the user'name!"
fi
系统管理员可以使用emuadd email_user_name (此脚本的文件名,并将此文件存放在/bin下)来传建email_user_name的邮箱
过程四:Qmail系统的使用
当上述过程结束后重新启动计算机。
在邮件客户端程序中设置如下:(假如E-mail服务器的主机名为your,name,DNS中设置的邮件交换管理的域为mail.domain,注意:通常mail.domain与.name相同,以E-mail用户user为例)
电子邮件地址:[email protected]
SMTP服务器地址:yourname
POP3服务器地址:yourname
POP3账号:user
POP3账号密码:(由管理员给你,可以自己修改)
启动设置
Qmail 运行有两种方式。tcpserver,xinet。 当域名解析有问题的时候,tcpserver运行会有问题。
qmail1.0.8,ucspi-tcp-0.88
(1) tcpserver方式
# pop3 设置
/usr/local/bin/tcpserver -P -H -R 0 pop-3 /var/qmail/bin/qmail-popup /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger &
# smtpd 设置
/usr/local/bin/tcpserver -H -R -t 1 -v -P -x/etc/qmail/tcp.smtp.cdb -u 511 -g 506 smtp /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true | /var/qmail/bin/splogger &
(2) xinetd方式
/etc/xinetd.d/pop3-3
service pop-3
{
disable = no
socket_type = stream
wait = no
user = root
server = /var/qmail/bin/qmail-popup
nice = 10
server_args = home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
}
/etc/xinetd.d/smtp
service smtp
{
disable = no
socket_type = stream
wait = no
user = vpopmail
server = /var/qmail/bin/qmail-smtpd
nice = 10
server_args = /home/vpopmail/bin/vchkpw /bin/true
}