Back to vBulletin 3.0 Add-Ons

vBouncer : Change thread subscribtion options for members with bouncing emails
Mod Version: 1.00, by tamarian

This modification is in the archives.
vB Version: 3.0.0 Rating: (0 vote - 0 average) Installs: 16
Released: 08 Feb 2004 Last Update: Never Downloads: 2
Not Supported  

Update April 5th: Step 2A for vBulletin 3 Gold added.

What vBouncer does
vBouncer will reduce your server load, bandwidth, and your forum admin in-box, by unsubscribing members who keep bouncing their emails back to your forum admin email, which may bomb your mail box if you have a busy forum with many members who subscribe to many threads, but their emails are either invalid, inbox full, or have ISP problems.

Screen shots
None, this is a command line script, with some changes in functions.php

Who may want to use this?
1. Very busy sites, with thousands of notifications a day.
2. Your admin box gets too many bouncing emails
3. You use Postfix or Sendmail. I'm not sure how this works on other mail servers, please let me know if this works with QMail, or Exism.

Caution
This may drive some of your members mad If their email bounces a lot, this script will modify their subscriptions from their favourite threads. They will have to fix their email account, and then modify their subscribtion manually to each thread again... This may not be due to bad emails, just ISP-side problems.

Use at your own risk. I'm sharing this since some indicated interest at vBulletin.com in this thread:
http://www.vbulletin.com/forum/showthread.php?threadid=71496
I'd be glad to help answer questions, but as with most hacks, it is your responsibility....


Installation
1. Create a unique email address on your server, dedicated to catch bouncing emails. Do not use adminemail, or any other existing email that you want to receive through a POP account. This email will be used only to catch bouncing emails.

Recommended name (makes for less editing): subscriber_notify

2. For vB 3.0.3 (older versions below, steps 2a or 2b)

I have yet to upgrade to 3.0.3, so this is contributed by ScottA:
Quote by ScottA
I got this running on 3.0.3. IIRC, what you need to do is open mail.php and look for this:

PHP Code:
    function Mail($toemail$subject$message$headers$fromemail$minusf false)
        {
            if (
$minusf)
            {
             
$this->success = @mail($toemail$subject$messagetrim($headers), "-f $fromemail");
            }
            else
            {
             
$this->success = @mail($toemail$subject$messagetrim($headers));
            }
        } 
And change it to this:

PHP Code:
    function Mail($toemail$subject$message$headers$fromemail$minusf false)
        {
            if (
$minusf)
            {
             
$this->success = @mail($toemail$subject$messagetrim($headers), "-f email");
            }
            else
            {
             
$this->success = @mail($toemail$subject$messagetrim($headers), "-f email");
            }
        } 
Note: You need to replace "email" with the email created in step 1.

2a. For vB3 gold
Edit functions.php

Find:
PHP Code:
       if ($vboptions['needfromemail'])
       {
         @
mail($toemail$subject$messagetrim($header), "-f $vboptions[webmasteremail]");
       }
       else
       {
           @
mail($toemail$subject$messagetrim($header));
       } 
Replace with (replace email with the email from step 1:
PHP Code:
   @mail($toemail$subject$messagetrim($header), "email"); 

2b. For older, vB3 beta versions
Edit functions.php

Find:
PHP Code:
                   // send those mails
                 
if ($vboptions['needfromemail'])
                   {
                     @
mail($email['toemail'], $email['subject'], $email['message'], trim($email['header']), "-f $vboptions[webmasteremail]");
                   }
                   else
                   {
                     @
mail($email['toemail'], $email['subject'], $email['message'], trim($email['header']));
                   } 
Replace with (replace email with the email from step 1:
PHP Code:
                   // vBouncer hack
                 // Replace subscriber_notify email with the email from step 1
                 
mail($email['toemail'], $email['subject'], $email['message'], trim($email['header']), "email");
                   
// end hack 

3. Copy vBouncer.pl.txt to a directory on your server above apache level. vBouncer.pl.txt is attached below.

Rename it to vBouncer.pl by typing:

mv vBounver.pl.txt vBouncer.pl

Make it executable by typing:

chmod +x vBouncer.pl

4. Edit the configuation section of vBouncer.pl
Code:
   #! /usr/bin/perl -w
   #
   # USAGE: ./vBouncer.pl -bounce : to unsubscribe threads from members with bouncing email
   #        ./vBouncer.pl : with no parameters to see (test) who will be unsubscribed
   #
   # Config:
   my $bouncelimit = 10;   # how many bounced emails are allowed, before taking actions
   my $downgrade = 0;      # What subscription level you will assign to bouncing members?
                           # 0 = No email, member will check subscribed thread through usercp
                           # 1 = Instant email, bad choice!
                           # 2 = Daily
                           # 3 = Weekly
 my $clearmailfile = 1;	# delete the mail file for bounced email when done (only deletes when -bounce option is used)
   my $bouncefile = "/var/spool/mail/subscriber_notify";
                           # the path/to/bouncing emails file. "subscriber_notify is the email name, you need
                           # to change it to the email name you chose for bouncing emails.
   my $db="database";        # mysql database name
   my $db_host="localhost";                # mysql host
   my $db_username="username";             # mysql username
   my $db_password="password";             # mysql password
   # end of config
5. Once a day or once a week (depending on the size of the spool size), you can run the scropt manually, or through a cron job. When done, you have to clear the email file, otherwise it will keep unsubscribing members whos emails no longer bounce.

To run the script in test mode, type:

./vBounver.pl

To run the script in bouncer mode, type:

./vBounver.pl -bouncer

To clear the mail box, use:
cat /dev/null > subscriber_notify
(or set the option in the script to do it)

Changes
Feel free to modify and post changes here or as new hacks, no credir or permission required. I may eventually add some features when I have the time.

Notes

1. The script assumes that Perl is installed @ /usr/bin/perl

If you have Perl installed elsewhere, you just need to update the first line of the script with the cirrect path:

#! /usr/bin/perl -w

2. You need to login to your server with a username that has write access to the mail spool, like a root/admin level user.

3. When run in test mode, ignore the warning "Use of uninitialized value in string eq at ./vBouncer.pl line 49" It just means you did not pass a parameter.

Download

This modification is archived and cannot be downloaded.

Similar Mods

vBouncer: reduce server load by unsubscribing bouncing members from threads vBulletin 3.5 Add-ons
vBouncer (PHP): reduce server load by unsubscribing bouncing members from threads vBulletin 3.0 Full Releases
vBouncer : Unsubscribe threads for members with bouncing emails vBulletin 2.x Full Releases

vblts.ru supports vBulletin®, 2022-2024