qmail安装
1)解压软件
如果你一直按照这个指导来作, 那么现在你已经有了一个C编译器, 以及源代码的tarball副本. 下一步, 拷贝或者移动tarball包到工作目录. /usr/local/src对于qmail和ucspi-tcp安装是个不错的选择. daemontools必须建立在/package下.
现在你应该成为root用户, 如果你还没有, 那就成为root吧.
su
umask 022
mkdir -p /usr/local/src
mv qmail-1.03.tar.gz ucspi-tcp-0.88.tar.gz /usr/local/src
mkdir -p /package
mv daemontools-0.76.tar.gz /package
chmod 1755 /package
现在你可以解开软件包了.
cd /usr/local/src
gunzip qmail-1.03.tar.gz
tar xpf qmail-1.03.tar
gunzip ucspi-tcp-0.88.tar.gz
tar xpf ucspi-tcp-0.88.tar
rm *.tar # 可选的, 除非磁盘空间非常紧张. optional, unless space is very tight
cd /package
gunzip daemontools-0.76.tar.gz
tar xpf daemontools-0.76.tar
rm *.tar # 可选的, 同上optional, again
那么, 现在应该有下面几个目录 /usr/local/src/qmail-1.03, /usr/local/src/ucspi-tcp-0.88, 和 /package/admin/daemontools-0.76.
2)建立目录
qmail安装程序会自行创建需要的子目录, 你只需要创建qmail的"home"目录.
mkdir /var/qmail
然后直达下一节.
注意: 如果你想把qmail的全部或者部分文件安装到除了/var的其他地方, 可以在/var/qmail下建立软链接到其他位置.
举个例子, qmail配置文件可以存放在/etc/qmail下面, 如下操作:
mkdir /etc/qmail
ln -s /etc/qmail /var/qmail/control
3)创建用户和组
最容易的创建用户和组的方式是创建一个小脚本文件然后执行它. 在源代码目录下你可以找到一个名字是INSTALL.ids的文件, 它包括了在你的系统平台下创建用户和组的命令行. 复制这个文件并命名另外一个名字, 编辑它来运行命令既快捷又简单.
cd /usr/local/src/qmail-1.03
cp INSTALL.ids IDS
4)修改qmail的配置参数
conf-文件是用来修改qmail配置过程中参数的专门的conf文件,conf-qmail文件就是能被修改的这样的几个文件之一。Conf文件位于在解压缩qmail版本包时建立的源代码目录下。
Conf-groups文件: 指定了qmail用来包含自己创建的用户名和组,主要由两个独立的组被创建,一个是qmail,各一个是nofiles
Qmail组包含了用来控制qmail系统的用户名,nofiles组用来服务那些不允许对系统中的任何文件进行访问的qmail进程的。这样就增加了qmail系统的安全性。
Conf-qmail指定了qmail的安装目录/var/qmail目录
Conf-spawn 文件指定了能够用来进行投递的qmail进程的最大数目,这个数目限制了/var/qmail/control/concurrence的配置。
Conf-split指定了qmail投送目录info locals mess等下面的子目录数,当子目录数太少时,由于一个目录下的文件太多会导致读写目录中的东西异常慢。一般设置为23.当每一个消息被接收到邮件队列后,都会按照
Dir=msg%conf-split被放置到dir子目录下。
Conf-users用来指定qmail需要提供给unix系统的唯一用户名,每一个用户名都作为qmail中的一个单独的函数来使用,你可以更改为任何你想要的用户,主要如下:
Alias qmail的别名用户账号
qmaild qmail的守护进程用户账号
qmaill qmail的日志用户账号
Root qmail的二进制文件的所有者
qmailp qmail的密码用户账号
qmailq qmail的排队用户账号
qmailr qmail的远程用户账号
qmails qmail的发送用户账号
5)qmail的目录结构
alias 包含qmail的系统别名文件以及postmaster等邮箱
bin 包含所有的qmail可执行文件
boot 包含在不同的邮件环境下启动qmail脚本
control 包含qmail所有的配置控制文件
doc 包含qmail的文档文件
man 包含qmail的文档页
queue 包含qmail邮件队列的目录
users 包含为qmail-lspawn创建的任何qmail用户数据库
6)qmail程序
Qmail-inject
Qmail-clean
Qmail-local
Qmail-local [-nN] user homedir local dash ext domain sender defaultdelivery
其中:local与domain连结表示用户的邮件地址,dash与ext与任何用户使用的别名.qmail文件有关,sender是消息的发送者,defaultdelivery是任何本地用来投送邮件消息的必要的指令。
Qmail-lspawn
Qmail-lspawn程序是用来调度本地邮件系统上的邮件投送进程的,指令格式如下:Qmail-lspawn defaultdelivery。
其中defaultdelivery 是用来标识投送本地邮件进程的必要的指令。
Qmail-pop3d:只能工作在qmail的MAILDIR格式下。
Qmail-rspawn:
这个程序是被qmail-send程序调用的,它用在将消息传递给远程邮件服务器上用户时,qmail-rspawn 程序试图调度消息以便通过qmail-remote程序投送,然后异步激活qmail-remote程序.qmail-rspawn的任务是为每一个消息接收方判断目的邮件服务器,qmail-remote为每一个远程主机调用一次。
附:邮件路由过程
SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。 若SMTP服务器mail.abc.com收到一封信要发到[email protected]:
a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次
请求shmail.abc.com的CNAME记录,直到没有为止。
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,
shmail MX 5 shmail.abc.com
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4
d. Sendmail与1.2.3.4连接,传送这封给[email protected]的信到1.2.3.4这台服务器的SMTP后台程序