作者 主題: 緊急求助:sendmail不同帳戶寄出郵件大小問題  (閱讀 3794 次)

0 會員 與 1 訪客 正在閱讀本文。

dexter

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
sendmail裡怎麼樣設置讓A用戶可以寄出的單封郵件大小上限為10M,讓B用戶寄出的單封郵件大小上限為20M,找了很久都沒找到資料。說是procmail可以做到,但是也沒找到怎麼做,有知道的老大賜教一下,很急啦。。。。。。。。。。。。

timxn

  • 懷疑的國中生
  • **
  • 文章數: 72
    • 檢視個人資料
    • 睿碼資訊
如以 mail from 來判定寄件者,
修改原始碼,
在 sendmail-8.13.7/sendmail/srvrsmtp.c 中 修改加入6行如下,(看你sendmail版本目錄)
                        long usersize;
                        char *wusersize;
                        if ((wusersize = macget(&e->e_macro,macid("{usersize}"))) != NULL)
                                usersize = atol(wusersize);
                        if (usersize > 0 )
                                MaxMessageSize = usersize;
以上是加入的程式,以下是你可以找看看在那個位置加入的
                        if (MaxMessageSize > 0 &&
                            (e->e_msgsize > MaxMessageSize ||
                             e->e_msgsize < 0))
                        {
                                usrerr("552 5.2.3 Message size exceeds fixed maximum message size (%ld)",
                                        MaxMessageSize);
                                sm_exc_raisenew_x(&EtypeQuickAbort, 1);
                        }
####################
然後在你的設定檔 sendmail.m4 最下方加入
LOCAL_CONFIG
Kusersizedb hash -T<TMPF> /etc/mail/db/usersizedb
LOCAL_RULESETS
SLocal_check_mail
R$*<$+>$*       <tab>        $: $2
R$+@$+         <tab>         $:$| $1 @ $2
R$|$+              <tab>     $: $| $1 $| ^^ $(usersizedb $1 $:? $)
R$|$+$|^^?       <tab>       $@ $1
R$|$+$|^^$+       <tab>      $: $(macro {usersize} $@ $2 $)
####################
以上<tab>請改為鍵盤中的<tab>鍵。
m4 sendmail.m4 > /etc/mail/sendmail.cf
####################
如以認證id設計改成以下
SLocal_check_mail
R$*   <tab>    $: $| $&{auth_authen} $|
R$|$|   <tab>   $@ ;
R$|$+$|      <tab>          $: $| $1 $| ^^ $(usersizedb $1 $:? $)
R$|$+$|^^?      <tab>        $@ $1
R$|$+$|^^$+      <tab>       $: $(macro {usersize} $@ $2 $)
####################
/etc/mail/db/usersizedb 為你db的位置檔。
使用 makemap 指令來查詢及產生db
格式為 username@domain   <tab>  20000000
或以認證發信
格式為 username   <tab>  20000000
makemap -e -r hash /etc/mail/db/usersizedb < /etc/mail/db/usersizedb.list (產生db)
makemap -u hash /etc/mail/db/usersizedb  (查詢db)
####################
以上的做法是直接將設定值MaxMessageSize根據/etc/mail/db/usersizedb 內的設定改掉。
請自己找資料如何compile sendmail.

 
« 上次編輯: 2008-02-13 23:06 由 timxn »

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
另外又一些 milter 也可以做到, Ex:
milter-length
mimedefang
...

JackYang78

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 2672
    • 檢視個人資料
+1 補充  MailScanner 也可以做到.
Networking & Communication Security SE

dexter

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
我原來有裝 MailScanner,但是不知道怎麼做,可否給個提示呢? ;D

JackYang78

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 2672
    • 檢視個人資料
MailScanner Rule(4.56.8-1) 裡面不是有 max.message.size.rules 看一下說明就好了..
Networking & Communication Security SE

dexter

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
多謝各位,已用 mailscanner 搞定 :)