本文适用于sendmail 8.x,在sendmail 8.13.4下测试通过
首先
你要确信你的sendmail已经正常工作了。
你可以试着用某个shell帐户用系统的mail命令发送/接受 几封外部邮件来看看。
不过,他目前还不能接受username.bbs@bbs.mydomain这样的邮件而已,
如果向这样的地址发邮件,得到的出错提示信息应该是user unknown.
(如果你的sendmail的基本配置还没有做好,网上关于sendmail如何配置的文章很多,你先慢慢看看)
下面,就是让它能够把邮件投递到bbs帐户中去
打开sendmail.cf(通常是/etc/mail/sendmail.cf)
grep ^M sendmail.cf
寻找以M开头的行,比如
Mlocal
Mprog
这里就是邮件发送程序的定义(我的服务器上,这个是在sendmail.cf的tail)
在后面添上
Mbbsmail, P=/home/bbs/bin/bbsmail, F=lsSDFMuhP, S=10, R=20, A=bbsmail $u $s
注意'P='后面的路径就是你的bbsmail的路径,不要写错,其他的选项很复杂,以后再解释吧
接下来就是重写S1规则
在sendmail 8.x上S1被写作SParse1,这样查找
grep '^SParse1' sendmail.cf
然后一路找下去(注意,不要超出SParse1的定义了,也就是说在下一个以S开头的行之前)
有这样的东西
# short circuit local delivery so forwarded email works
R$=L < @ $=w . >$#local $: @ $1special local names
R$+ < @ $=w . >$#local $: $1regular local name
在注释和规则之间,我添了这样3行
R$+.bbs<@>$* $#bbsmail $:$1 bbs mail gateway
R$+.bbs<@LOCAL>$* $#bbsmail $:$1 bbs mail gateway
R$+.bbs<@ $=w .>$* $#bbsmail $:$1 bbs mail gateway
注意,一定要添在 系统原有的那两行定义之前
其实不必要添3行,前两行就够了,或者即使只有第一行,它似乎也能正常工作。
我刚开始学sendmail,不大懂,高手来解释一下后两行的区别吧。
然后就是重新启动sendmail了
service sendmail restart
然后来测试一下。
最后一点注意:
sendmail对tab和space是很敏感的,LHS和RHS之间一定要是以tab分格而不是space,但是目前很多终端,比如xterm,fterm,等等,在复制一段文本的时候都喜欢把tab转换为空格。
还有就是emacs,如果你是用emacs编辑这个conf文件,emacs默认是保留tab键的,tab键是用来对齐一段文本
可能需要这样
C-q tab
--
FROM 222.187.43.201