让hmailserver的用户使用各自的中继来发送邮件
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
前些日子与hunrybecky兄说到hmailserver的逐帐号中继,确实,直接拥有这个功能的邮件服务器软件貌似不多,以前在考虑hmailserver部署的一些问题的时候有参考过dbmailserver的官方文档,所以发现dbmailserver有这个功能,至于mdaemon倒没太注意。这个逐帐号中继也就是说让没有邮件用户使用自己的中继来发送,以免所有的帐号使用同一个中继帐号来发送,导致这个帐号使用过度而被封掉或被某些会验证来路的服务器所阻止。[br][br]另外也能解决一个问题,所有用户共同使用同一个帐号的时候,如果你不在邮件客户端中添加回复地址为自己的地址,对方自动回复的邮件就会发往中继邮箱,因为对方回复的邮件头中都找不到发件人的信息,所以也无法让hmailserver来根据头信息分拣邮件,再一个问题就是发送失败的信息再怎么折腾都只能发送到中继邮箱,所以之前我只能在自己的邮件客户端中设置一个中继邮箱的帐号,然后手工把退信回复给所有人。汗,这还只是在用户不多的情况下,而且很多发送失败的邮件都不用通知发件人,才没有那么多工作量。如果让用户使用各自的中继来发送,那么a用户就使用a用户自己的中继邮箱,如果退信或自动回复,会回复到a用户自己的中继邮箱,再让邮件服务器pop3抓取回来,ok,完成了所有步骤。[br][br]我以前和现在所说的这些关于hmailserver的功能或问题,都建立在这样一个环境上,在外部有自己的企业邮箱,在公司局域网建立一个内部邮件服务器,使用的域名与外部企业邮局的域名一样,当然,这个域名只是虚拟的假的,这样一个做法只是为了减少同一个局域网的邮件不用到外部绕一圈了再回来,至于如果你有光纤接入或固定ip,或其他的环境问题,我没有去考虑,因为目前我就只有这样一个环境。好了,下面踏入正题。[br][br]最近一直在思考这个问题,在hmailserver的官方论坛问了一下,老外好干脆,甩了两个词,route,rule。趁着这两天服务器宕机,将这些所想到的问题都在hmailserver上测试了一下,发送了几十封测试邮件,每封都研究一下头信息,终于把这个问题解决了,解决方法也如老外说的很简单,路由加规则,说起来很简单,但测试这个还是要死不少脑细胞的。[br][br]经过测试我有一个发现,在smtp协议中设置的那个中继才是默认管用的中继,而你路由中设置的中继,默认好像是不生效的,这个问题还是让我有点头晕,毕竟hmailserver的文档是英文的,我的英文水平让我无法全盘了解整个系统,之前我写另一篇hmailserver相同域名之间邮件的转发的时候,又好像生效了,有些糊涂,接下来的日子还是慢慢测试看。我这样测试过,不管如何设置路由,默认中继出去的邮件头都是smtp协议中设置的那个中继帐号,如果把那个帐号取消掉了,邮件就是直接由hmailserver的smtp发送出去的,但如果你设置了规则让邮件走路由,那路由中继的优先级是高于默认的那个中继的。[br][br]有了这个发现,后来的问题就简单了,设置路由,然后添加相应的规则不就解决了?没那么简单,添加了一个路由后就卡住了,第二个路由如何添加?域名不允许重复,该如何处理?看了半天文档,看来看去也看不太明白,就那么一句话“the domain that this route should be applied to. the domain name is case insensitive.”,到底是大小写不敏感还是可以随便写?应该是大小写不敏感,不管了,反正这里随便写几个字母也能保存,然后设置好中继帐号,接下来就设置规则了,规则名随便,criteria这里还是使用了个use and,应该使用use or也是可以的,但好像有一次测试的时候失败了。规则是这样的,predefined field选from,search type是equals,value是在路由中添加的那个中继帐号,意思就是当发件人等于这个邮箱的时候触发,刚开始给action添加使用路由,测了半天没成功,也不知道规则生效没,后来改了一下,让action是delete e-mail,这样简单一点,只要规则生效了,那封邮件会自动删除,是收不到的,这样直接测试到规则生效为止,后来终于发现search type使用等于equals是不行的,改为contains后终于那个邮件收不到了,呃,仔细看一下邮件头,都是如from: “=?gb2312?b?uti71ots?=”这样一个写法,原来如此,不能搞成等于啊,在这里也顺便提一下,邮件头里有很多东西比较有用,比如规则里面的自定义字段。[br][br]既然规则生效,把action改成send using route,使用的路由当然就是你之前定义的咯,再次测试,终于,邮件发送成功,查看接收到的邮件头,发现里面的信息已经变成路由中的中继帐号了,呼呼,任务完成,看来添加路由时候的domain栏不输入域名也是可以的。[br][br]接下来该怎么办就不用多说了,添加相应的路由,添加相应的规则,然后就ok了,麻烦是麻烦了一点,没有达到咱所想的和dbmailserver那样,直接在外部邮箱里设置一次就可以了,但咱这是免费的不是,手动解决了这个问题还是比较有成就感的,哈哈。 [br]
该文章在 2011/4/9 10:44:28 编辑过 |
关键字查询
相关文章
正在查询... |