如何在Qmail里配置SMTP

运维 系统运维
Qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。qmail使用SMTP协议与其它系统上的MTA交换邮件。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。那如何在在Qmail里配置SMTP呢,请看下文。

Qmail里配置SMTP不复杂,请看下文。

  一、操作系统

  RatHat Linux 6.2

  二、必需的软件

  1、qmail-1.03 (www.qmail.org)

  2、checkpassword (cr.yp.to/checkpwd.html) 或 vpopmail (www.inter7.com/vpopmail)

  3、qmail-smtpd.c (www.nimh.org/hacks/qmail-smtpd.c) 关键文件

  其实,qmail和checkpassword都可以是编译好的,并正在使用中的。这样只需一个文件就可以搞定,

  而且不影响正常使用。

  三、软件的安装

  1、正常安装qmail,checkpassword 或 vpopmail 。

  2、设置relay规则。

  relay的意思是:服务器接受客户端的smtp请求,将客户端发往第三方的邮件进行转发。

  relay 必须是可控制的。qmail下控制relay很简单,只要客户端接入的smtp进程的环境变量里

  包含(RELAYCLIENT="")就允许relay ,否则拒收。实现方法是在/etc/tcp.smtp 里对需要relay

  的IP逐条设置(RELAYCLIENT=""),然后用tcprules 生成规则表。因为本文要实现SMTP认证后的

  relay ,不需要对任何IP进行预先设定,所以默认规则设置成“只对本服务器relay”。

  echo '127.0.0.1:allow,RELAYCLIENT=""' > /etc/tcp.smtp

  /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

  3、将qmail-smtpd.c 拷贝到qmail 的源文件目录里,***先将原文件备份。

  单独编译 qmail-smtpd 。(vi Makefile;找到跟qmail-smtpd有关的命令)

  ./compile qmail-smtpd.c

  ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \

  timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \

  received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \

  datetime.a getln.a open.a sig.a case.a env.a stralloc.a \

  alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat \

  socket.lib`

  4、将新生成的qmail-smtpd 拷贝到/var/qmail/bin 目录下。为了与原来的执行文件有区别,

  这里把新的执行文件改名为 qmail-smtpd.auth 。

  5、设置 /bin/checkpassword 或 /home/vpopmail/bin/vchkpw 可以SetUID和SetGID。这点

  很重要,否则认证无法通过。这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序

  原来只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,

  并取出用户的邮件目录。这些操作qmaild 都没有权限去做。如果smtp进程要调用密码验证

  程序,则必须要使用 setuid 和setgid 。其实这点大可放心,这两个密码验证程序都是带

  源代码的,本身非常安全,只需要放在安全的目录里就可以了(设置其他用户除qmaild 可

  执行外都没有权限执行;其实如果没有其他SHELL帐户,也就不用这么麻烦了)。

  chmod 4755 /bin/checkpassword 或

  chmod 4755 /home/vpopmail/bin/vchkpw

  6、命令行测试:

  如果使用的是vpopmail,要把下面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。

  #su - qmaild -c "/var/qmail/bin/qmail-popup localhost /bin/checkpassword pwd"〈回车>

  +OK ,〈18789.978689240@localhost>

  user realuser〈回车>

  +OK

  pass password〈回车>

  如果结果显示的是用户目录,说明成功了;如果显示"-ERR authorization failed",除检查

  密码外,还要检查用户上级的各个目录是否可读,还有密码验证程序的权限是否设置正确。

  7、修改smtpd启动命令行,原来是:

  /usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 \

  0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

  (其中604是qmaild 的UID,601是qmaild 的GID),改为:

  /usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 \

  0 smtp /var/qmail/bin/qmail-smtpd.auth /bin/checkpassword /bin/true 2>&1 \

  | /var/qmail/bin/splogger smtpd 3 &

  如果使用的是vpopmail,要把上面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。

  8、KILL掉原来的smtpd进程,启动新的smtpd进程。

  9、在客户端上使用 OutlookExpress 和 Netscape 4.6 以上版本的邮件软件进行检验。

  四、以上设置在 checkpassword 和 vpopmail 两种验证方式下均已实践通过。

通过上文的介绍,我们都知道了如何在Qmail里配置SMTP,希望对大家有所帮助!

【编辑推荐】

  1. 深入了解 Qmail的工作原理和配置文件
  2. Qmail邮件系统日志和管理
  3. 清除Qmail列队邮件
  4. Qmail简单介绍
  5. Linux系统Qmail邮件服务器安装过程解析
  6. linux-qmail 病毒/垃圾邮件处理
  7. Linux下的邮件服务器 Qmail
责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-01-21 10:50:53

Sendmail

2011-01-19 15:40:25

Qmail安全

2011-01-21 18:08:22

Qmail

2013-12-11 10:21:31

2018-04-08 08:32:59

2011-01-19 11:17:20

2011-01-19 14:31:15

Qmail安装设定

2011-01-19 14:20:53

Qmail安装

2019-07-12 16:28:32

MacKubernetes

2018-03-09 10:07:34

mysql

2017-12-11 09:04:53

LinuxScrot截屏

2014-04-14 13:05:41

RedisDBA服务器

2021-09-07 15:25:51

鸿蒙HarmonyOS应用

2019-04-16 10:30:45

Windows 10配置键盘Windows

2014-06-30 09:27:17

UbuntuTomcat集群

2009-07-17 16:17:04

在tomcat上配置j

2021-08-09 11:31:54

Linux重复相片删除

2011-05-17 10:43:18

oracleblob字段

2016-11-09 09:48:03

Arch Linux设定WiFi网络

2011-01-19 14:39:59

Qmail技巧
点赞
收藏

51CTO技术栈公众号