免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2588 | 回复: 4
打印 上一主题 下一主题

[Mail] sendmail的aliases能做到mysql数据库里吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-01 20:28 |只看该作者 |倒序浏览
5可用积分
请教一个问题:
     现在邮件服务器的用户都用mysql数据库管理,用的sendmail+mimedefang,现在想把邮件群组也放到mysql数据库中管理,google了一下,没找到什么答案,不知道CUer做过此类配置或者有什么关于这个问题的线索,指点一下,多谢!

最佳答案

查看完整内容

這東西你用 mimedefang 解即可 只是個範例,隨手寫而以, 你自己參考看看

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-12-01 20:28 |只看该作者
這東西你用 mimedefang 解即可

只是個範例,隨手寫而以, 你自己參考看看


  1. foreach my $recip (@Recipients) {
  2.    $recip=~/<(\S)@(\S)>$/;
  3.    my ($localpart,$domainpart)=($1,$2);
  4.    next if (! ismydomain($domainpart));   # 不是自己的域名不做 expand 解釋
  5.    next if ( !ismyaliases($localpart));        # 不在 mysql aliases 中
  6.    delete_recipient($recip) if (is_local_user($localpart) && ismyaliases($localpart) ); # 如果 aliases 同 user 帳號,則 user 帳號會不在收件人之列
  7.    foreach my $element (expand($localpart)) {
  8.           add_recipient($element);
  9.    }
  10. }


  11. sub ismydomain($)
  12. {
  13. my $domain;
  14. # 讀取 local-host-names 判斷,或以 $local-host-names 變數判斷
  15. open(LHN,"< /etc/mail/local-host-names");
  16. $lhn=<LHN>;
  17. $local_host_names=join('',@lhn);
  18. if ($domain=~/$local_host_names/i) {    # 本機的 user/aliases
  19.     return 1;
  20. } else {
  21.     return 0;
  22. }
  23. }

  24. $alasies="all rd fae services "  #aliases 列表,可程式自動生成,這裏只是舉例故用變數代表
  25. sub ismyaliases($)
  26. {
  27. my $user;
  28. ($user=~/$aliases/i)  ? return 1:return 0;
  29. }

  30. sub expand($)
  31. {
  32. my $exp;
  33. # DBI select DB ...
  34. $sth = $dbh->prepare("select user from aliases where aliases_name='$exp'");
  35. $sth->execute;
  36. $rows = $sth->rows;
  37. return $exp if ($rows==0);
  38. return (@expand_list); # 自己處理一下 mysql select 結果
  39. }

复制代码

论坛徽章:
0
3 [报告]
发表于 2008-12-02 17:29 |只看该作者
自己顶一下:wink: :wink:

论坛徽章:
0
4 [报告]
发表于 2008-12-03 15:31 |只看该作者
原帖由 abel 于 2008-12-3 10:47 发表
這東西你用 mimedefang 解即可

只是個範例,隨手寫而以, 你自己參考看看


foreach my $recip (@Recipients) {
   $recip=~/$/;
   my ($localpart,$domainpart)=($1,$2);
   next if (! ismydomain($ ...


abel对sendmail研究很深呀,踩个脚印,或许以后用的着

论坛徽章:
0
5 [报告]
发表于 2008-12-04 10:41 |只看该作者
原帖由 abel 于 2008-12-1 20:28 发表
這東西你用 mimedefang 解即可

只是個範例,隨手寫而以, 你自己參考看看


foreach my $recip (@Recipients) {
   $recip=~/$/;
   my ($localpart,$domainpart)=($1,$2);
   next if (! ismydomain($ ...


abel兄,一语惊醒梦中人啊,太感谢了,我怎么就没有想到用mimedefang呢?太妙了!

再次感谢,我好好研究一下~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP