日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQLfilter的實(shí)際配置

以下的文章主要介紹的是qmailadmin+vpopmail+MySQL filter的實(shí)際配置,如果你對(duì)其相關(guān)的實(shí)際操作有興趣的話,你就可以對(duì)以下的文章點(diǎn)擊觀看了。希望會(huì)給你帶來一些幫助在MySQL filter的實(shí)際配置方面。

潁東ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

作用于qmail-local(即MDA)的方法。

這里有幾個(gè)問題,需要解決。

1.如何在建用戶的時(shí)候自動(dòng)的初始化用戶的初始MySQL filter文件.

2.webmail定義的filter如何起作用。

3.還有一些是解決這些問題的過程中遇到的問題。

針對(duì)第一個(gè)問題,研究了一下qmailadmin,看了代碼之后才發(fā)現(xiàn),

qmailadmin支持插件似的配置文件,在操作用戶后,

運(yùn)行在插件配置文件中定義的腳本。腳本是針對(duì)每個(gè)域的,即放在域的目錄下面。

呵呵,網(wǎng)上都沒有介紹哦,估計(jì)是inter7 unleased.

域的目錄通過/var/qmail/users/assign來定位。例如,assign的內(nèi)容如下:

 
 
 
  1. +foo.com-:foo.com:515:511:/home/vpopmail/domains/foo.com:-:: 

則在/home/vpopmail/domains/foo.com下定義一個(gè)配置文件.qmailadmin-hooks。注意屬

主和屬性,這個(gè)配置文件格式如下:

 
 
 
  1. #.... 
  2. op: cmd

其中到qmailadmin-1.06,op支持以下一些操作

 
 
 
  1. "adduser", 
  2. "deluser", 
  3. "moduser", 
  4. "addmaillist", 
  5. "delmaillist", 
  6. "modmaillist", 
  7. "listadduser", 
  8. "listdeluser" 

例如:你想在增加用戶以后干些事情,就以增加MySQL filter為例,.qmailadmin-hooks

就可以這么配:

adduser: /home/vpopmail/bin/inituser.sh

inituser.sh腳本如下:

 
 
 
  1. #!/bin/bash 
  2. Domain=$1 
  3. User=$3 
  4. Passwd=$2 
  5. DomainPath=/home/vpopmail/domains/$Domain 
  6. umask 0177 
  7. exec 1> /tmp/adduser.log 
  8. exec 2> /tmp/adduser.log 
  9. echo $DomainPath 
  10. cat>$DomainPath/.qmail-$User <|maildrop $DomainPath/$User/.mailfilter 
  11. EOF 
  12. cat>$DomainPath/$User/.mailfilter 
  13. EOF 
  14. cat>$DomainPath/$User/.userfilter <#MFMAILDROP=2 
  15. # DO NOT EDIT THIS FILE. This is an automatically generated filter. 
  16. FROM='$User@$Domain' 
  17. import SENDER 
  18. if ($SENDER ne "") 
  19. FROM=$SENDER 
  20. to "$DomainPath/$User/Maildir/." 
  21. EOF 
  22. cat>$DomainPath/$User/Maildir/maildirfilterconfig 
  23. MAILDIR=$DomainPath/$User/Maildir 
  24. EOF 

針對(duì)第二個(gè)問題,實(shí)際上上面inituser.sh已經(jīng)提供了解決方法,也就是sqwebmail通過

maildirfilterconfig來查找MySQL filter文件,這里定義的是../.userfilter,它有包含在.mailfiter中,

而點(diǎn).mailfilter則是maildrop調(diào)用的規(guī)則文件。

這里有幾個(gè)地方需要解釋,

1..userfilter中的前幾行comment是起作用的,是sqwebmail的標(biāo)記,不能去掉,否則sqwebmail會(huì)報(bào)錯(cuò)

2.MAILDIRFILTER為什么不指向.mailfiter,而是.userfilter,一句話方便擴(kuò)充??梢栽?mailfilter中加入

其它的MySQL filter rule, 而這些rule并不需要用戶編輯。

3..qmailadmin-hook中的腳本是qmailadmin fork出的子進(jìn)程執(zhí)行的,qmailadmin由于是以http的用戶運(yùn)行

所以建立這些文件的時(shí)候會(huì)有錯(cuò)誤。因此,我們改了一點(diǎn)源代碼,位置在源碼包的qmailadmin*/user.c的

函數(shù)call_hooks的fork之前, 如下:

 
 
 
  1. + setuid(0); 
  2. + setgid(VPOPMAILGID); 
  3. + setuid(VPOPMAILUID); 
  4. pid = fork(); 
.

編譯之后qmailadmin后,并替換cgi目錄下的文件,注意屬主是root和setuid位.

4.為什么不在inituser.sh中用su來執(zhí)行,這樣就不用改代碼了?首先,apache(Unix平臺(tái)最流行的WEB服務(wù)器平臺(tái))重定向了stdin,而su是檢查

stdin是不是tty,如果不是,就不會(huì)執(zhí)行。其次,fork出來的子進(jìn)程是exec的方式執(zhí)行MySQL filter的配置中指定的命令,

而exec是不復(fù)制euid和egid的,所以如果不用su,就需要用自己編一個(gè)suid的程序。這又麻煩了.

.qmailadmin-hooks如下:

 
 
 
  1. adduser: /home/vpopmail/bin/inituser.sh 
  2. deluser: /home/vpopmail/bin/deluser.sh 

/var/vpopmail/bin/deluser.sh如下

 
 
 
  1. #!/bin/bash 
  2. Domain=$1 
  3. User=$3 
  4. Passwd=$2 
  5. DomainPath=/home/vpopmail/domains/$Domain 
  6. rm -f $DomainPath/.qmail-$User

注:原來qmailadmin有bug.

在源碼包的qmailadmin*/user.c的函數(shù)call_hooks的這行

error = execl(cmd, Newu, Domain, Password1, Gecos, NULL);

這里明顯有問題,execl的第二個(gè)參數(shù)是arg0,實(shí)際上不起作用。而Gecos是用戶的真實(shí)

用戶名,只有在新建的時(shí)候才有值,不填就是Newu,所以我以為用戶名是$3.

但是moduser和deluser的時(shí)候,操作的用戶名都不在Newu里面,而是在ActionUser里面。

所以hook中定義的deluser和moduser腳本取不到用戶名.

所以需要將這行改為

 
 
 
  1. if (Newu %26amp;%26amp; *Newu) { 
  2. error = execl(cmd, cmd, Newu, Domain, Password1, Gecos, NULL); 
  3. } else { 
  4. error = execl(cmd, cmd, ActionUser, Domain, Password1, Gecos, NULL); 

而且,如果要方便擴(kuò)展的話,可以將op也放在execl的參數(shù)中,這樣,hook中定義的

腳本就可以用一個(gè)。根據(jù)op類型來操作。就不像我這樣分成好多腳本了。

所以u(píng)ser.c最終該過后,如下,call_hooks函數(shù)的fork附近:

 
 
 
  1. setuid(0); 
  2. setgid(VPOPMAILGID); 
  3. setuid(VPOPMAILUID); 
  4. pid = fork(); 
  5. #ifdef DEBUG 
  6. fprintf(actout,"Where the parameters are: %s, "%s", %s, %s, %s, %s, NULL); ", 
  7. cmd, hooks[hook_type], Newu, Domain, Password1, Gecos); 
  8. #endif 
  9. if (pid == 0) { 
  10. // error = execl(cmd, Newu, Domain, Password1, Gecos, NULL); 
  11. if (Newu %26amp;%26amp; *Newu) { 
  12. error = execl(cmd, cmd, Newu, Domain, Password1, Gecos, NULL); 
  13. } else { 
  14. error = execl(cmd, cmd, ActionUser, Domain, Password1, Gecos, NULL); 

而inituser.sh和deluser也需要相應(yīng)的改參數(shù)位置,我只貼上修改的頭幾行如下:

 
 
 
  1. #!/bin/sh 
  2. User=$1 
  3. Domain=$2 
  4. Passwd=$3 
  5. RealName=$4 

以上的相關(guān)內(nèi)容就是對(duì)qmailadmin+vpopmail+MySQL filter的配置的介紹,望你能有所收獲。


網(wǎng)頁標(biāo)題:MySQLfilter的實(shí)際配置
本文鏈接:http://www.dlmjj.cn/article/dpjdeii.html