- 论坛徽章:
- 0
|
本帖最后由 r_zack 于 2011-02-17 19:19 编辑
最近想跳槽,面试了几家公司,都要求会维护sendmail,于是我抽时间看了看,试了试
……缺陷还是比较严重的,但都是可以通过自己写Milter解决,于是我也用Perl写了个socket当Milter,
学Perl以来,除了作点简单的FastCGI,第一次写对我的运维工作有意义的程序,经过实验,$j, $i, $_, ${auth_authen}等宏是可以用的,
但是$a, $b, $g等却是不能用的,根据O'Reilly Sendmail 4th Edition Page 1181的说明,我在sendmail.mc中使用了- define(`confMILTER_MACROS_ENVFROM', `g')
复制代码 还是不能用,但随着对sendmail.cf的观察,我发现能用的宏都被包含在下段代码中:- 1. O InputMailFilters=ZackMilter
- 2. O Milter.macros.connect=j, _, {daemon_name}, {if_name}, {if_addr}
- 3. O Milter.macros.helo={tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}
- 4. O Milter.macros.envfrom= i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}
- 5. O Milter.macros.envrcpt={rcpt_mailer}, {rcpt_host}, {rcpt_addr}
- 6. O Milter.macros.eom={msg_id}
复制代码 于是我把$a, $b, $g加进去,但还是不管用
$ctx->getsymval('g');
始终返回undef
我感觉这可能是我对sendmail的配置问题,可是我在mail板块问了这个问题,那里太冷清了,都没人理我,所以我又会来了,呵呵,有没有哪位用过Sendmail Milter Macro的大神给点思路??
我觉得那些用不了的宏应该是被某种意义上默认情况下“禁用”了吧?并且我没能正确的“启用”它导致我的代码总是返回undef
是不是我不该在envfrom阶段调用$g ?
我在eom阶段调用它,它也是undef呀。 |
|