Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vBouncer (PHP): reduce server load by unsubscribing bouncing members from threads Details »»
vBouncer (PHP): reduce server load by unsubscribing bouncing members from threads
Version: 1.2, by tamarian tamarian is offline
Developer Last Online: Nov 2023 Show Printable Version Email this Page

Version: 3.0.7 Rating:
Released: 06-25-2005 Last Update: 08-28-2005 Installs: 19
Code Changes Additional Files  
No support by the author.

There's also a vB 3.5 version: https://vborg.vbsupport.ru/showthrea...threadid=83486

vBouncer is a handy tool for busy forums (or those that do not require email verification) to control the amounts of bogus emails sent from and to your server. This was initially released for vB 2.x and vB 3.0.x as a Perl script, and is now fully integrated with vB as scheduled tasks with admin panel control.

What vBouncer does: vBouncer monitors your mail spool file, and identifies members responsible for large amounts of bounced emails. It then issues a PM warning, and when the unsubscribe threshold is met, it will will unsubscribe them for all threads, and sets them to the "no email" subscription level.

After a couple of runs, this should significantly reduce your server load.

Features:
Manual or auto processing option
Collect logs via IMAP/POP or mail spool file
Uses vB's cron files (Scheduled tasks)
Custom filters to match patterns in bounced emails
Encryption header to authenticate bounces.
Stats on members with bouncing emails, and error codes
Tuning options
Verbose cron logs for diagnostics
Option to send PM warning prior to reaching the limit
Option to send PM notifications after reaching the limit
Option to change the member's subscription default
Option to all thread subscriptions to "no email"
Option to all forum subscriptions to "no email"
Option to move offenders to a different primary usergroup
Option to process 5.0.0/550 errors (email unknown) upon a single email, isntead of observing the bounce limit

Installation:
1. Extract the files into the corresponding directories (admincp => admincp, includes/cron => includes/cron)
2. Run the installation script in the admincp
3. Fill out the settings menu in the vBouncer section of the admin panel (see the how-to post below)
4. Edit includes/mail.php
Find:
PHP Code:
if ($minusf)
        {
            
$this->success = @mail($toemail$subject$messagetrim($headers), "-f $fromemail");
        }
        else
        {
            
$this->success = @mail($toemail$subject$messagetrim($headers));
        } 
Replace with:
PHP Code:
global $vboptions;
                if (
is_valid_email($vboptions['vbouncer_spool_account'])) {
                        if (
$vboptions['vbouncer_header_return_key'])
                                
$headers .= 'X-Return-ID: ' md5($vboptions['vbouncer_header_return_key'] . $toemail) . "\n";
                        
$this->success = @mail($toemail$subject$messagetrim($headers), '-f' $vboptions['vbouncer_spool_account']);
                }
                else
                        
$this->success = @mail($toemail$subject$messagetrim($headers), "-f $fromemail"); 
In admincp/index.php, find:
PHP Code:
                                  if (can_administer('canadmincron')) 
Add before::
PHP Code:
                          if (can_administer('canadmincron'))
    {
        
construct_nav_option('vBouncer Settings''options.php?do=options&dogroup=vBouncer''|');
        
construct_nav_option('Stats''vbouncer.php?do=stats''<br />' );
        
construct_nav_option('Diagnostics''vbouncer.php?do=diag''<br />');
        
construct_nav_group('vBouncer');
    } 
5. Once ready, add the cron scripts to your scheduled tasks: vbouncer-collect.php (should be run daily, or more frequently) and vbouncer-clean.php (weekly, equal to Bounce limit period)

Change log:

- July 11, 2005 v1.2 Bug fix for some server/PHP setups; resolve aliases for return keys, otherwise some aliases would be considered forged.

- July 5, 2005 v1.1 Bug fix in standard report pattern matching

- July 4, 2005 v1.0 Added encrypted header for authentication (suggested by Paul M).

- July 3, 2005 v0.9.1 added fixed a bug preventing IMAP/POP log collection.

- July 2, 2005 v0.9 added IMAP/POP option and custom filters file vbouncer.ini

- June 27, 2005 v0.51 for 3.0.7 Corrected installer file.

- June 27, 2005 v0.5 for 3.0.7 Add setting for custom header strings.

- June 26, 2005 v0.2 for 3.0.7 Initial release No changes, just removed the plugin

Screenshots from 3.5 beta, but it looks the same on 3.0.7...

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #62  
Old 07-05-2005, 03:43 PM
jb605 jb605 is offline
 
Join Date: Feb 2004
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tamarian
Yes, if it's local, that should do it. Just make sure your PHP has IMAP support built/compiled in.
Maybe this is not so relative, but I seem not able to find an instruction on how to compile php with imap, a simple --with-imap (--with-imap=shared) and --with-imap-ssl won't work.

Can anybody share some experience?

Thanks.
Reply With Quote
  #63  
Old 07-05-2005, 04:00 PM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jb605
Maybe this is not so relative, but I seem not able to find an instruction on how to compile php with imap, a simple --with-imap (--with-imap=shared) and --with-imap-ssl won't work.

Can anybody share some experience?

Thanks.
There maybe some dependencies missing. Check the error log from the compilation to what it complains about..
Reply With Quote
  #64  
Old 07-05-2005, 06:51 PM
jb605 jb605 is offline
 
Join Date: Feb 2004
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I read the php document, looks like it says it needs something called c-client library. I thought php would have imap and pop support built-in, but seems it is more complicate than that. Also, after I tried the c-client library, looks like it is more of a pop/imap daemon than a client. I have my email service on another cpanel server, so I really just need php to be able to read imap mailbox. I am a little bit confused here.

BTW, if I choose to use email forward and now I can read the file locally, how would I update the stats manually?

Thanks.
Reply With Quote
  #65  
Old 07-05-2005, 08:32 PM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jb605
I read the php document, looks like it says it needs something called c-client library. I thought php would have imap and pop support built-in, but seems it is more complicate than that. Also, after I tried the c-client library, looks like it is more of a pop/imap daemon than a client. I have my email service on another cpanel server, so I really just need php to be able to read imap mailbox. I am a little bit confused here.
I'm not familiar with cPanels, but I thought they can be easily configured to encorporate additional modules easily. Let's see if one of the cPanel users here has any tips for you.

Quote:
BTW, if I choose to use email forward and now I can read the file locally, how would I update the stats manually?.
If the file is on your server, just enter the path in the vBouncer settings.
Reply With Quote
  #66  
Old 07-05-2005, 09:57 PM
jb605 jb605 is offline
 
Join Date: Feb 2004
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tamarian
I'm not familiar with cPanels, but I thought they can be easily configured to encorporate additional modules easily. Let's see if one of the cPanel users here has any tips for you.
My cpanel server has imap service running fine. But for my forum to be able to retrieve email via pop, I need to compile php with imap support myself (my web server customized php installation). I have some problems following the instructions on php.net about enabling imap support in php (I assume it means php as imap client to access imap service), because following the instructions, it tells me how to run imap/pop daemon service. I am confused. It is required to run imap/pop daemon service on the same server for php to be able to compile with imap support?

Quote:
Originally Posted by tamarian
If the file is on your server, just enter the path in the vBouncer settings.
I have this setting in place. I set it to not do it automatically, but don't know how to actually start the bounce email collection process manually?

Thanks.
Reply With Quote
  #67  
Old 07-05-2005, 10:05 PM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jb605
My cpanel server has imap service running fine. But for my forum to be able to retrieve email via pop, I need to compile php with imap support myself (my web server customized php installation). I have some problems following the instructions on php.net about enabling imap support in php (I assume it means php as imap client to access imap service), because following the instructions, it tells me how to run imap/pop daemon service. I am confused. It is required to run imap/pop daemon service on the same server for php to be able to compile with imap support?
No, you don't need to run a client. You just need to build PHP with IMAP support. Once you have that, you can POP emails from the other server, if that other server has a POP server.

Quote:
I have this setting in place. I set it to not do it automatically, but don't know how to actually start the bounce email collection process manually?
That's fine. Set it to not do it automatically, but install the vbouncer-collect.php as a cron job to run daily or whatever you prefer. It will collect the stats for you on the intervals you provide. You can test it by using the scheduled task manager, clicking "run now". You can run the collection task manually or automatically, and it will still not touch bouncing members, if the vBouncer is not in auto-mode.
Reply With Quote
  #68  
Old 07-05-2005, 10:49 PM
jb605 jb605 is offline
 
Join Date: Feb 2004
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tamarian
No, you don't need to run a client. You just need to build PHP with IMAP support. Once you have that, you can POP emails from the other server, if that other server has a POP server.
My problem is with building php with imap support. The documentation says I need to compile PHP with --with-imap=DIR. What do I specify for the DIR here? And what do I need to install for that DIR option?

Quote:
Originally Posted by tamarian
That's fine. Set it to not do it automatically, but install the vbouncer-collect.php as a cron job to run daily or whatever you prefer. It will collect the stats for you on the intervals you provide. You can test it by using the scheduled task manager, clicking "run now". You can run the collection task manually or automatically, and it will still not touch bouncing members, if the vBouncer is not in auto-mode.
Thanks.
Reply With Quote
  #69  
Old 07-05-2005, 10:59 PM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jb605
My problem is with building php with imap support. The documentation says I need to compile PHP with --with-imap=DIR. What do I specify for the DIR here? And what do I need to install for that DIR option?
You may not need the dir, if the liberary is in the lib path.

I'd just install the c-client first as the docs say, then configure --with-imap and --with-imap-ssl and read the error report, if any. If that doesn't work, check with the host or sys admin.
Reply With Quote
  #70  
Old 07-05-2005, 11:22 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tamarian
I'm not familiar with cPanels, but I thought they can be easily configured to encorporate additional modules easily. Let's see if one of the cPanel users here has any tips for you.
On Cpanel it's just a tick box when you build/update apache/php.
Reply With Quote
  #71  
Old 07-05-2005, 11:48 PM
jb605 jb605 is offline
 
Join Date: Feb 2004
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tamarian
You may not need the dir, if the liberary is in the lib path.

I'd just install the c-client first as the docs say, then configure --with-imap and --with-imap-ssl and read the error report, if any. If that doesn't work, check with the host or sys admin.
Since my server has imap and pop binary and can be started via xinet.d, I figured that imap and pop is actually installed on my server, but might only as binary, no library?

The documentation on php.net sugguested installing c-client, which might install both the binary and the library, while they should actually suggest the user install it only to get the library, not to install it as a daemon service.

I tried to compile PHP directly with compilation option --with-imap and --with-imap-ssl, but got this error:

configure: error: Cannot find rfc822.h. Please check your IMAP installation.

Looks like it is missing the header file. Not sure if I install c-client will resolve it. I am a little hesitate to install c-client because the installation file tells me it is a daemon service, but my server already has imap and pop daemon service.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:47 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05367 seconds
  • Memory Usage 2,348KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (4)bbcode_php
  • (13)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete