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
  #152  
Old 12-16-2005, 01:04 PM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by David Bott
Ah!!! I have a great idea. (I think)

Ok, you have the option to act fully on a 5.0.0/550, or what have you, on the first bounce of a mail, Why this can make for an issue as you know, it gave me an idea. (Look at the log, a lot of them are 5.0.0/550.

In any case....here is the thought. Have the option to look at the Last Activity date where you can set..."If have not visited in X days, assume dead e-mail" and then act on it.

So they get a 5.0.0/550 bounce. When the cleaner runs the system looks up the address in the user database, and also pulls the last activity date for that user and says..."is the last activity date that older than X days" If yes, run the full clean options.

You see, looking at some of the users that have bounced, they have not been back to the site in some time, thus it would be great to act on them why it may not be good to act on some others with a 5.0.0/550.

Thoughts?
95+% of the mail performance issues are due to instant notifications. Those are only sent once per thread, until the member's next visit. If they don't visit often, they will not generate instant notifications, so adding more code for those who have not visited lately will have little impact.
Reply With Quote
  #153  
Old 12-16-2005, 02:24 PM
David Bott David Bott is offline
 
Join Date: Dec 2001
Posts: 215
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for th note.

Maybe you do not know my site and thus do not see the same concerns. (Not that you would know the site.)

We see over 65,000 unique people a day with over 3000 showing as on-line most of the day. Over 190,000 register with about 250-300 new registrations a day based on what is going on. Over 6.5 millions posts and under 4000 in Alexa.

Running the clean once a week does not work. In 3 days we could have someone already over the other limit and thus to late for any warning notice for it would have already taken action. The site is very, very active and a lot of mail goes out.

I mentioned the idea to check the last visit date because looking at some of the users that have bounced mail, they have not been to the site in over 6 months. You see, we have threads that are active still for years.

Oh, the image path. Ys, I had seen that line but would not know what edit out to stop the ../ part.

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

Quote:
Originally Posted by David Bott
Maybe you do not know my site and thus do not see the same concerns. (Not that you would know the site.)

We see over 65,000 unique people a day with over 3000 showing as on-line most of the day. Over 190,000 register with about 250-300 new registrations a day based on what is going on. Over 6.5 millions posts and under 4000 in Alexa.

Running the clean once a week does not work. In 3 days we could have someone already over the other limit and thus to late for any warning notice for it would have already taken action. The site is very, very active and a lot of mail goes out.
vBouncer was written for large sites. Smaller sites have no use for it, so I'm aware of the load issues, that's why I wrote it

You don't need to run the "clean" cron once a week, but hourly is an overkill, and provides no benefits, unless your warning period is defined as hourly. The interval should be no less than your warning interval, can be 2 days, 3 days.

Users who have not visited for a month or more, will never get instant notification emails. It's either the daily digest, or the weekly digest. If you set your digests to run in the off hours, then 99% of the mail load damage is caused by instant notifications, which is done by active members only.
Reply With Quote
  #155  
Old 02-09-2006, 09:40 PM
rstan rstan is offline
 
Join Date: Mar 2004
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

have i had to much crack today or does my vb have no email.php?
Reply With Quote
  #156  
Old 02-10-2006, 01:17 AM
tamarian tamarian is offline
 
Join Date: Oct 2001
Location: Canada
Posts: 1,205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by rstan
have i had to much crack today or does my vb have no email.php?
mail.php, not email.php
Reply With Quote
  #157  
Old 04-03-2006, 10:59 PM
David Bott David Bott is offline
 
Join Date: Dec 2001
Posts: 215
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello...

I have been using this for some time now and it works great.

However I just moved my mail to a new mail server and I have run into an issue. Here is the error that is reported...

Failed to access email, please check vBouncer mail settings.
Last error: Certificate failure for mail.tivocommunity.com: self signed certificate: /C=US/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=cambridge.micfo.com/emailAddress=ssl.net
Unable to clear bounced emails, exiting.

The question is, is their any way to ingnor this error and contiune on? The POP3 account does work just fine but it seems SSL is getting in the way for PHP is using IMAP.

Please help.

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

Try adding "notls" into the connection string.
Reply With Quote
  #159  
Old 10-10-2006, 06:20 PM
Quarterbore Quarterbore is offline
 
Join Date: Mar 2005
Location: Valley Forge PA
Posts: 538
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Anybody up to trying to get this updated for 3.6.x?
Reply With Quote
  #160  
Old 11-25-2006, 03:11 PM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can you please fix code suggested for mail.php? Because as it is in the notes, there are some curly brackets missing, and since the time I did that suggested change, all email from my sites were stopped.

Also, if one of the guys/gals who posted in this, have installed this hack and it is working, can you please tell me how you modified your mail.php file?

One more thing. I am trying to use the file method for this hack. The file /var/spool/mail/rejects (or whatever you call the account name), is owned by rejects and the group is mail. The permissions are set to 666, but as soon as procmail delivers mail to it, it is reset to 600. Also, I do not see anything in my php configuration, regarding pop. All I see is :

mod_php4, mod_setenvif, mod_so, mod_auth, mod_access, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, http_core

Is mod_imap the required procedure to access the email account via POP3? If so, why do I get a Failed in diagnostics?

"Your PHP installation supports IMAP/POP Failed"

Thanks
Reply With Quote
  #161  
Old 02-14-2007, 08:53 AM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Anyone can answer the above please??
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 05:17 AM.


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.05263 seconds
  • Memory Usage 2,333KB
  • 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
  • (3)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
  • (3)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (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