Qmail使用SMTP发信的设置问题集

2006-12-3来源:Qmail人气:24693

1.qmail的发信三个问题。
  2.对于发信的rcphosts文件答疑。
  3.向合法用户发信无法forward。
  4.QMAIL除了禁ip控制发邮件有其他办法吗?
  5.smtp启动脚本疑问。
  6.由relaying问题引起的qmail能收信不能发信问题解决。
  7.qmail的smtpd认证缺点.

  1.qmail的发信三个问题。

  Q: 1.qmail发信时与对方的smtp服务器有几次认证过程,就是一次不成功的话回重发几次?如何顺序?如何调整?
  2.发信部成功的反弹消息是依靠什么模块?可以关掉吗?
  3.如果对方机器没有开启,如何反应?

  A: 1 qmail与对方邮件服务器的之间交互不存在认证过程 只有能否链接上
  2 qmail根据一些列规则查找指定的邮件接收用户,若没有找到则缺省返回用户不存在的信息,若使用了vpopmail则可以设定目标用户不存在时将邮件投递给一个指定用户,可以参考我的第三篇qmail文章
  3 那qmail就会返回对方主机不可达的消息

  Q: 谢谢您的回答,还有点疑惑
  1。qmail与对方邮件服务器的之间交互不存在认证过程 只有能否链接上 ,是否只要对方的smtp开启就把信发过去,但是对方因为没有这个用户不收如何?因为想加快邮件发送速度,想做到以下几点,如何作?
  2。qmail发信时一次不成功的话不再重发,从队列中删去。
  3.发信不成功的不反弹消息。
  4.如果对方机器没有开启,这在10-30分钟内不再发送此域的信。
  谢谢。这其实是在发大量的信的情况下才需要的。看到5分钟内可发送1万封电子邮件的报道,您认为如何?

  A: 1 那对方可能在当时smtp协议交互过程中就直接告诉no such user 或者将信接收下来 再判断是否有该用户 若没有 则返回no such user 的错误信。这些要求可能比较麻烦 需要自己修改qmail程序
  ==============
  2.对于发信的rcphosts文件答疑。

  Q: 为何我在服务器上设置好qmail和vpopmail后,用Foxmail向别的email服务器(如:163.net 21cn.com)发送email会出现:
  Warning
  The server says:
  553 sorry, that domain isn't in my list allowed rcpthosts
  (#5.7.1)
  Continue?
  可是我将21cn.com,163.net加入到/var/qmail/control/ rcpthosts 后就没事了,可正常收发邮件。难道我要一个个邮件服务器加入到rcpthosts文件?有什么方法可以不用那么麻烦呢?...多谢了...^_^' 我将 rcpthosts删除了,就没事了,可是这样做好不好呢?...^_^

  A: qmail有一个名为rcpthosts(该文件名源于RCPT TO命令)的配置文件,其决定了是否接受一个邮件。只有当一个RCPT TO命令中的接收者地址的域名存在于rcpthosts文件中时,才接受该邮件,否则就拒绝该邮件。若该文件不存在,则所有的邮件将被接受。当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发(relay),则该邮件服务器就被称为开放转发(open relay)的。当qmail服务器没有rcpthosts时,其是开放转发的。请仔细看这个文件的含义
  ----------------------------
  3.向合法用户发信无法forward。

  Q:我安装并配置qmail后,我尝试向本机的某一合法用户(sexy_boy)发信(非root组),产生如下信息:
  new msg 379069
  info msg 379069: bytes 204 from qp 2665 uid 0
  starting delivery 16: msg 379069 to local sexy_boy@mail.tom.com
  (1)status: local 1/10 remote 0/20
  (2)delivery 16: deferral : /bin/sh:_dot-forward:_command_not_found/
  而且(1),(2)行信息每隔一段时间就重复出现。我的mail server为mail.tom.com
  我了root的别名为:mr_ho 请高手们帮帮我。我已经搞了一个星期,还没有搞好。谢谢!

  A:你没有 安装 .forward程序!请看我的主页mlix.yeah.net看如何下载和安装
  =============================
  4.QMAIL除了禁IP控制发邮件有其他办法吗?

  QMAIL-SMTPD密码验证
  Q: 大侠们,QMAIL除了禁IP控制发邮件有其他办法吗?一旦别人利用来发垃圾邮件不是惨了,难道就没有密码验证的补丁吗?有的话告诉我好吗?最好告诉设置的方法

  A:如果使用vpopmail实现虚拟账号 则其提供了一种使漫游用户使用mail relay二其他用户不允许的方式。其原理是当一个用户使用pop3取了信件以后 则在其后的一端时间内 允许该用户的ip地址通过该服务器relay 具体可以参考< a HREF="www.inter7.com/vpopmail/">vpopmail的文档
  ================
  5.smtp启动脚本疑问。

  Q:smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
  请问这语句在inetd.conf文件中是什么意思?我知道它是启动smtp服务的,可我想问的是,为什么会有八个字段呢?还有一些服务的启动不止八个字段还要长,又是怎么会事呢?多谢了..^_^
  本来应该是:名称 封包类型 协议 wait/nowait 用户程序执行参数这七个字段的呐..

  A:最后两个字段看作是参数
  ===============
  6.由relaying问题引起的qmail能收信不能发信问题解决。

  Q:我的QMAIL可以收!不能发出去!好象就是RELAYING的问题!各位大侠可以帮帮我吗?

  A: 您先看看control目录下的smtPRoutes文件, 它的内容使用那台机器发信, 如果没添, 添一个机器, 如果还是不行, telnet 那台机器的25端口, 如果仍然不行, 检查那台机器的inetd.conf看看25端口有没有打开.

  Q: 我在里面添了好多邮件服务器的域名了
  163.net 263.net citiz.net
  还添了我自己的邮件服务器。按你的意思是只要一台就行了吗?是添我自己的还是别人的邮件服务器呢?能不能说详细一点?(我很笨!对不起)

  A: 是添你要往外发邮件的机器, 是你自己的机器, 你肯定要有台机器发邮件啊. 那台机器要运行smtp守护进程. 只要添一台就可以了, 那些什么263.net统统去掉, 应该在那台机器上做配置.

  Q: 我的机器已经有smtp进程了!域名也添进去了是想用我自己的机器发邮件!(作为邮件服务器)可是我发邮件时报错!发不出去啊!

  A:1.你要先检查你的机器是不是在一个防火墙后面,也许 你的防火墙把你的25port关了.
  2.现在你看看是不是用
  qmail-start ./Mailbox sqlogger qmail 启动了
  Qmail.在/etc/syslog.conf里面把mail.*定向到
  /var/adm/maillog. 检查log里面有什么东西
  3.你说发不出去,你直接telnet localhost 25 检查有没有什么问题. 能直接用这个发吗?
  4.用ptrace(如果没记错的话)来跟踪这个pid,看错误信息

  Q:1。我的机器不在放火墙后
  2。进程有
  qmail-send
  splogger qmail
  qmail-lspawn|preoot
  qmail-rspawn
  qmail-clean
  3.已经定向到mailog中
  maillog中的错误信息是:
  第一行:Jun 16 08:26:54 HY qmail:
  961115214.632296 starting delivery 337: msg 144928 to remote kil@126.com
  第二行:Jun 16 08:26:54 HY qmail: 961115214.632418
  status:local 0/10 remote 1/20
  第三行:Jun 16 08:26:54 HY qmail: 961115214.636463 delivery 337:
  deferral:Sorry,_I_wasn't_able_to_establish_an_SMTP_connection._(#4.4.1)/
  第四行:Jun 16 08:26:54 HY qmail: 9611154.636559 status:local 0/10 remote 0/20
  4.我的telnet xxx.xxx.xxx.xxx 25 的过程:
  telnet xxx.xxx.xxx.xxx 25
  220 domain ESMTP
  helo dude
  250 ok
  mail
  250 ok
  rcpt
  250 ok
  354 go ahead
  502 unimplemented(#5.5.1)
  下面输入什么命令都是502 unimplemented(#5.5.1)如果是MAIL给本地用户而不是INTERNET用户就可以发!也收的到(自己服务器的用户)

  A:1.你的进程看起来有点奇怪,
  qmail-lspawn|preoot 应该有点问题.我不知道你的启动脚本是怎么写的, 用下面这个应该没问题:

  echo "Starting qmail..."
  PATH=/var/qmail/bin:$PATH
  export PATH
  qmail-start ./Mailbox splogger qmail %26amp;
  2.你应该给另外一个Email服务器发信件test,你现在发过去的Email服务器可能有问题,多实验几个地址.
  ================
  7.qmail的smtpd认证缺点.

  我也曾试过smtp采用验证的方式.(以下是我的经验不知对否)
  不过有个缺点就是只有你漫游的用户成功收取到信件后才能在验证的文件(open-smtp)中加入一条记录如202.109.73.241:...表明可以允许该IP的客户发信了即使不在rcphosts中,所以如果你没有成功收信是不可以发信的.而/home/vpopmail/bin/cleansmtp定期如分钟清理open-smtp中记录.又重复上面的过程了.
  这种smtpd验证的方式对于发信的人来讲真是太不方便了.