- 主题:用Postfix作BBS的MTA
修改master.cf
bbsmail unix - n n - - pipe
flags=FRh. user=bbs:bbs argv=/home/bbs/bin/bbsmail ${user}
transport中加入
bbs.bjsing.net bbsmail
然后运行postmap transport
main.cf中加入
relay_domains = bbs.bjsing.net
然后运行postfix reload
这样就可以了,调试的时候不要忘了看/var/log/maillog
--
FROM 61.167.120.130
【 在 jieer (小男孩) 的大作中提到: 】
: 标 题: 用Postfix作BBS的MTA
: 发信站: BBS 水木清华站 (Mon Jul 7 20:56:14 2003), 转信
:
: 修改master.cf
: bbsmail unix - n n - - pipe
: flags=FRh. user=bbs:bbs argv=/home/bbs/bin/bbsmail ${user}
似乎应该是?
bbsmail unix - n n - - pipe
flags=FRh. user=bbs:bbs argv=/home/bbs/bin/bbsmail ${user} ${sender}
至少对我刚装的系统是需要这样配置才能用的~
:
: transport中加入
: bbs.bjsing.net bbsmail
:
: 然后运行postmap transport
:
: main.cf中加入
:
: relay_domains = bbs.bjsing.net
:
: 然后运行postfix reload
:
: 这样就可以了,调试的时候不要忘了看/var/log/maillog
:
: --
:
: ※ 来源:·BBS 水木清华站 smth.org·[FROM: 61.167.120.130]
--
FROM 202.108.12.*
如果还用bbsmail的话确实应该加上
我试了一下好像用bbsqmail会好一点,postfix 可以直接用,不过没找到 qmailpost,在 bbsqmail 里把相关的注掉就可以了
【 在 inming (NightElves) 的大作中提到: 】
: 似乎应该是?
: bbsmail unix - n n - - pipe
: flags=FRh. user=bbs:bbs argv=/home/bbs/bin/bbsmail ${user} ${sender}
: ...................
--
FROM 125.34.50.*
对了,现在系统往外发信内容不见了,变成一个part1.bin的附件,这是怎么回事呢,估计是postfix的配置问题
【 在 zls (`_~) 的大作中提到: 】
: 如果还用bbsmail的话确实应该加上
: 我试了一下好像用bbsqmail会好一点,postfix 可以直接用,不过没找到 qmailpost,在 bbsqmail 里把相关的注掉就可以了
--
FROM 202.108.12.*
嗯,发现问题并解决了
是由libBBS/bbs_sendmail.c中837行(如下)的process_control_chars引起的,似乎\t被替换成\n了,没细细研究
815 int bbs_sendmail(char *fname, char *title, char *receiver, int isbig5, int noansi,session_t *session)
816 { /* Modified by ming, 96.10.9 KCN,99.12.16 */
817 FILE *fin;
818 char newbuf[PATHLEN];
...
836 while (fgets(gbuf, 255, fin) != NULL) {
837 if(noansi) process_control_chars(gbuf,"\n");
839 if (gbuf[0] == '.' && gbuf[1] == '\n')
840 fputs(". \n", fout);
841 else
842 fputs(gbuf, fout);
843 }
把process_control_chars(gbuf, "\n") 用 if(noansi) my_ansi_filter(gbuf) 替换,并在bbs_sendmail前面加上my_ansi_filter的定义(我从FREE的代码中copy过来的...)
/* copy from flyriver qmail2bbs.c */
void my_ansi_filter(char *source)
{
char result[500];
int i, flag = 0, loc = 0;
int len;
len = strlen(source);
len = len >= sizeof(result) ? sizeof(result) - 1 : len;
for (i = 0; i < len; i++) {
if (source[i] == '\x1B') {
flag = 1;
continue;
} else if (flag == 1 && isalpha(source[i])) {
flag = 0;
continue;
} else if (flag == 1) {
continue;
} else {
result[loc++] = source[i];
}
}
result[loc] = '\0';
strncpy(source, result, loc + 1);
}
【 在 inming (NightElves) 的大作中提到: 】
: 对了,现在系统往外发信内容不见了,变成一个part1.bin的附件,这是怎么回事呢,估计是postfix的配置问题
--
FROM 202.108.12.*