作者 主題: MySPAM, 我的廣告信管理程式  (閱讀 237378 次)

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

ony

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #150 於: 2010-01-19 10:12 »
@ yoww大大,不好意思,這陣子在忙很多雜事~
   我主管有幫我看了,看來是PHP沒Working,所以網頁才會出不來~ 不知有沒有什麼方法來確定PHP與APACHE的關係~

   其實應該說,PHP、APACHE、MYSQL都有在運作,但就是‥PHP和APACHE之間好像沒連起來的感覺~
   
« 上次編輯: 2010-01-19 10:48 由 ony »

yoww

  • 活潑的大學生
  • ***
  • 文章數: 431
    • 檢視個人資料
    • 唉呦~MIS先生
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #151 於: 2010-01-20 09:14 »

檢查看看 /etc/php.ini

代碼: [選擇]
; Enable the PHP scripting language engine under Apache.
engine = On

看看是不是 On
唉呦~MIS先生 http://i-yow.blogspot.com/
寶貝的天空      http://3-baby.blogspot.com/

ony

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #152 於: 2010-01-20 09:46 »
@ yoww大大,感謝您一路的幫忙~
   我家課長幫我搞定了,原來都是“Smarty”的路徑問題,PHP  APACHE MYSQL都運作正常,只是路徑問題,所以沒法秀出畫面,但現在可以了~
   不過現在又有些問題,我實在不太懂~真是不好意思,我的LINUX底子不是很好~
1. 我公司是2台MAIL Server架構,所以我現在設MySPAM這台是負責收信跟過濾廣告信的,所以User的信事實上是在另一台對內的,所以‥目前這台沒HOME的目錄,這樣能做嗎?(指MySPAM能運作嗎?)
2. 我看原作Tommy大有寫=>可以先改某個使用者 HOME 下頭的 .mailfilter 檔案 (可以先用某個使用者來測試, 等運作成功後, 再改用 /etc/maildroprc, 讓全部的使用者都使用)
   
   ↑這個要怎麼改呢?因為Mail Server運作中,我也不敢冒然的直接全上了(不過‥我的/home下面,什麼東東也沒有,不知要怎麼改啊‥)

我的是Postfix+Amavis+Procmail+spamassassin~

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5372
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #153 於: 2010-01-20 09:59 »
用 procmail 就先改某個使用者的 ~/.procmailrc 做測試就可以. 等確定沒問題再改用 /etc/procmailrc

你上頭提到那個 maildroprc 是給 maildrop 用的, 不是給 procmail 用的.

ony

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #154 於: 2010-01-20 17:58 »
@ 我因為沒有任一User的家目錄,所以我自建了一個 /home/user/mail
   然後在mail下,自建了 .procmail 內容是
#MAILDIR=/var/mail
LOGFILE=/var/log/procmail/procmail.log
:0
* ^X-Spam-Status: Yes {
:0: * ! ^X-MySPAM: YES
|/usr/bin/php -Cq /var/www/html/myspam/web/index.php save_spam
}
:0b
* ^X-Spam-Flag: YES
$DEFAULT
:0
* ^X-MySPAM: YES
$DEFAULT

也確認Postfix裏的main.cf裏 mailbox_command 有指定 procmail的位置~
不過‥
1.廣告信沒進到MySPAM (本來我SPAM在Amavis裏設定是直接丟棄,為了這我改為D_REJECT了,結果沒進MySPAM,反而退信了)
2.procmail.log都沒資料

↑請問這樣何解呢?  ???

ony

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #155 於: 2010-03-24 11:11 »
@ Gateway架構還真難搞啊~
  目前困難是,已經有將save.php改成re_send.php,以利轉給第二台收信主機,但‥目前MAIL會在Gateway那台無限迴圈,所以我只好引入phpmailer來幫忙看能不能用第二台的SMTP來寄信,看會不會就可以將信寄走不會鬼打牆~

但‥phpmailer的程式碼是要加在哪裡才會生效啊~有沒有也是Gateway架構的大大,拜託請給小弟一點意見~感恩~

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5372
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #156 於: 2010-03-24 12:46 »
gateway 為什麼把 save.php 改成 re_send.php? 這是要做什麼?
跑到 save.php 不就是被認定是 spam 而要存到資料庫了嗎?

原則上... myspam 是要依靠 maildrop 或 procmail 的程式來運作, 而這類的程式是最後儲存信件會去跑的程式, 所以要在實際儲存信件的那台機器上跑.
會變成 gateway 的方式, 通常是實際 mail 存放的機器不是 unix link 的系統, 也許是不行跑 maildrop/procmail....

所以, 你必須先不考慮 myspam... 先考慮如何在你的 gateway 上頭跑 maildrop/procmail 而可以把信往實際上的機器去送吧.

我想到的作法是:
1. 把 save.php 存成一個 send_to_mailserver.php 的檔案, 然後把內容改成這樣子:
代碼: [選擇]
<?php

if (!defined(&#39;IN_MYSPAM&#39;)) {
    
global $spam_url;
    
header(&#39;Location: &#39;.$spam_url);
    
exit;
}

function 
writelog($str)
{
    global 
$test_mode$debug;

    if (
$test_mode) {
        echo 
$str."\n";
        
$fp fopen(&#39;/tmp/debug.log&#39;, &#39;at&#39;);
        
if ($fp) {
            
fputs($fp$str."\n");
            
fclose($fp);
        }
    }
    else
        
syslog($debug LOG_DEBUG LOG_INFO$str);
    return;
}

function 
SendToMailServer()
{
    global 
$debug$test_mode$test_user;

    if (!isset(
$_SERVER[&#39;LOGNAME&#39;])) {
        
if (!$test_mode) {
            
writelog(&#39;no LOGNAME!&#39;);
            
return 1;
        }
        
$user $tesr_user;
    }
    else {
        if (
$test_mode)
            
$user $test_user;
        else
            
$user $_SERVER[&#39;LOGNAME&#39;];
    
}

    if (
$debugwritelog("try to send mail for $user");

    
$fname = &#39;php://stdin&#39;;
    
$fp fopen($fname, &#39;rb&#39;);
    
if ($fp == 0) {
        
writelog("Can&#39;t open $fname");
        return 
1;
    }

    
$content = &#39;&#39;;
    
while (feof($fp) == 0) {
        
$buf fgets($fp4096);
        
$content .= $buf;
    }
    
fclose($fp);

    if (
send_mail($user$content)) {
        
writelog("send mail for $user");
        return 
0;
    }
    
writelog("failed to send mail for $user");
    return 
1;
}

?>


這樣子這個 send_to_mailserver.php 就會去做寄信的動作. 而 myspam 中的 smtp 伺服器是可以指定的, 只要把它指到你實際上的 email server (如果不是, 就會 loop 了), 只要執行到這兒就應該可以把信寄到實際的伺服器上頭了.

2. 然後再改 index.php, 在

代碼: [選擇]
if ($argc == 2 && $argv[1] == 'save_spam') {
    require_once('save.php');
    $rc = SaveSPAM();
    closelog();
    $ret = ($rc == 0) ? 0 : EX_TEMPFAIL;
    exit($ret);
}
的後頭再加上
代碼: [選擇]
if ($argc == 2 && $argv[1] == 'send_mail') {
    require_once('send_to_mailserver.php');
    $rc = SendToMailServer();
    closelog();
    $ret = ($rc == 0) ? 0 : EX_TEMPFAIL;
    exit($ret);
}

這樣子, 只要去執行 send_mail 參數時, 就會直接去寄信.

3. 這時, 只要改一下 procmailrc 的設定, 原本可能是
代碼: [選擇]
#LOGFILE=/var/log/procmail.log
MAILDIR=/var/mail
:0
* ^X-Spam-Status: Yes
{
    :0
    * ! ^X-MySPAM: YES
    |/usr/bin/php -Cq /var/www/html/myspam/web/index.php save_spam
}

改成
代碼: [選擇]
MAILDIR=/var/mail
:0
* ^X-Spam-Status: Yes
{
    :0
    * ! ^X-MySPAM: YES
    |/usr/bin/php -Cq /var/www/html/myspam/web/index.php save_spam
}
:0
* > 0
|/usr/bin/php -Cq /var/www/html/myspam/web/index.php send_mail
這樣子應該就可以把所有原本要存的信寄到實際的伺服器了.

PS. 沒實際試過, 不保證上頭的 code 是正常可以執行的.

ony

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: MySPAM, 我的廣告信管理程式
« 回覆 #157 於: 2010-03-24 16:09 »
@ twu2 大,看到您的回覆,比冬天泡溫泉還甘溫啊~
   您判斷的沒錯,我公司因為主機較老舊,效能及安全的關係,作成 2台LINUX。一台Gateway,另一台才是對內的存放信箱及寄信的~
   而廣告信、病毒都是Gateway在判斷,自然MySPAM也要放這~
   而為什麼後來我求救說要裝PHPMailer上去,就是因為不知smtp要去哪指定,所以只好‥但是~還是搞不定~
   您的方法看來才是最精簡的,而且‥行了!!!!!!

   不過procmailrc裏我還要改一下,目前在MySPAM裏設好自訂規則白名單的信會不見~我再來搞一下,感恩啊~在這向您扣拜~
   

Squawell

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
Re: MySPAM, 我的廣告信管理程式
« 回覆 #158 於: 2011-08-15 11:41 »
小弟有幾個問題想跟大家請教一下:
小弟安裝的是iredmail這個整合性的MAIL系統.....目前的狀況是MYSPAM的網頁顯示OK..測試是否有寫入資料庫也正常(/usr/bin/php -Cq index.php test_save_spam)..所以小弟寄了一個測試信去某帳號.但是登入該帳號卻沒發現任何信件.但是在WEBMAIL上面卻有收到標是有SPAM字樣的信件.不知道是哪邊設定有誤?想請大家幫忙謝謝.
以下是小弟有做修改的地方:

1./etc/postfix/main.cf
代碼: [選擇]
mailbox_command = /usr/bin/procmail
2./etc/procmailrc
代碼: [選擇]
:0
* ^X-Spam-Status: Yes
{
:0:
* ! ^X-MySPAM: YES
|/usr/bin/php -Cq /var/www/html/myspam/index.php save_spam
}
:0b
* ^X-MySPAM: YES
$DEFAULT
在IREDMAIL上面有多一個設定如下:
代碼: [選擇]
# Set Maildir path.
MAILBOX="$HOME/$DOMAIN/$USER/"
DEFAULT="$MAILBOX"
JUNK="${MAILBOX}/.Junk/"


twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5372
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: MySPAM, 我的廣告信管理程式
« 回覆 #159 於: 2011-08-15 11:58 »
把 procmail 的 log 打開來, 看看有沒有真的跑到 myspam 那個 php 吧.

Squawell

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
Re: MySPAM, 我的廣告信管理程式
« 回覆 #160 於: 2011-08-15 13:53 »
把 procmail 的 log 打開來, 看看有沒有真的跑到 myspam 那個 php 吧.
剛看了一下是空的=.=..是否表示沒有跑myspam的問題??