HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/mailing.wb-cloud.nl/public_html/admin/plugins/disposablemailblock.php
<?php

class disposablemailblock extends phplistPlugin {
  public $name = "Disposable email address blocker";
  public $coderoot = '';
  public $version = "0.1";
  public $authors = 'Michiel Dethmers';
  public $enabled = 1;
  public $description = 'Disallows signing up to the newsletter with a disposable email';
  public $documentationUrl = 'https://resources.phplist.com/plugin/preventdisposable';
  
  ## more to add: http://www.spambog.com/en/instructions.htm
  
  private $disposable_domains = array(
    ## mailinator
    'mailinator.com',
    'supergreatmail.com',
    'spamthisplease.com',
    'letthemeatspam.com',
    'chammy.info',
    'devnullmail.com',
    'bobmail.info',
    'sendspamhere.com',
    'spamherelots.com',
    'sogetthis.com',
    'mailinator.net',
    'safetymail.info',
    'binkmail.com',
    'tradermail.info',
    'thisisnotmyrealemail.com',
    'veryrealemail.com',
    'mailinator2.com',
    'notmailinator.com',
    'zippymail.info',
    'suremail.info',
    'mailismagic.com',
    'mailtothis.com',
    'reallymymail.com',
    'mailtothis.com',
    'monumentmail.com',
    'spambooger.com',
    

    ## and a mailinator copycat
    'mytrashmail.com',
    'mt2014.com',
    'thankyou2010.com',
    'thankyou2010.com',
    'trash2009.com',
    'mt2009.com',
    'trashymail.com',
    'mytrashmail.com',
    'mailmetrash.com',

    ## and another one
    'spamfree24.org',
    
    ## there are too many :-(
    # guerrillamail.com
    'sharklasers.com',
    'guerrillamailblock.com',
    'guerrillamail.com',
    'guerrillamail.net',
    'guerrillamail.biz',
    'guerrillamail.org',
    'guerrillamail.de',
    'spam4.me',
    
    'fakeinbox.com',
    
    # getairmail.com
    'getairmail.com',
    'vidchart.com',
    'dealja.com',
    'consumerriot.com',
    'tagyourself.com',
    'whatiaas.com',
    'yyou.co.uk',
    'whatsaas.com',
    'whatiaas.com',
    'whatpaas.com',
    'broadbandninja.com',
    
    'dispostable.com',
    
    #yopmail.com
    'yopmail.com',
    'yopmail.fr',
    'yopmail.net',
    'cool.fr.nf',
    'jetable.fr.nf',
    'nospam.ze.tc',
    'nomail.xl.cx',
    'mega.zik.dj',
    'speed.1s.fr',
    'courriel.fr.nf',
    'moncourrier.fr.nf',
    'monemail.fr.nf',
    'monmail.fr.nf',
    'ypmail.webarnak.fr.eu.org',
    
    # 10minutemail.com
    'rmqkr.net',
    '10minutemail.com',
    'drdrb.net',
    
    'br.mintemail.com',
    
    'mailcatch.com',
    '1800newcareer.co.cc',
    'b.pythonboard.de',
    'etsnt.co.uk',
    'gaudiumetspes.happyforever.com',
    'harvard.edu.tr.vu',
    'lowiq.linux-board.com',
    'mailcatch.com',
    'mailcatch.legendoftavlon.com',
    'mailcatch.loveafraid.com.ar',
    'mailsto.co.cc',
    'rockuniverze.co.cc',
    
    ##fakemailgenerator.com
    'cuvox.de',
    'armspy.com',
    'dayrep.com',
    'einrot.com',
    'fleckens.hu',
    'gustr.com',
    'jourrapide.com',
    'rhyta.com',
    'superrito.com',
    'teleworm.us',

    ##from https://github.com/ivolo/disposable-email-domains
    '0x01.gq',
    '0x01.tk',
    '10mail.org',
    '33m.co',
    '33mail.com',
    '3utilities.com',
    'acusupply.com',
    'adultvidlite.com',
    'aji.kr',
    'anonaddy.com',
    'anonaddy.me',
    'anonbox.net',
    'anyalias.com',
    'bandband1.com',
    'bei.kr',
    'bel.kr',
    'beo.kr',
    'bfo.kr',
    'bho.kr',
    'biz.st',
    'bko.kr',
    'blueauramassage.com',
    'bum.net',
    'cad.edu.gr',
    'chickenkiller.com',
    'cid.kr',
    'cko.kr',
    'cloudns.asia',
    'cloudns.cc',
    'cloudns.cx',
    'coms.hk',
    'creou.dev',
    'cu.cc',
    'dbo.kr',
    'ddns.net',
    'defaultdomain.ml',
    'dko.kr',
    'dmtc.edu.pl',
    'dns-cloud.net',
    'dnsabr.com',
    'dnses.ro',
    'doy.kr',
    'drope.ml',
    'dropmail.me',
    'dzalaev-advokat.ru',
    'e4ward.com',
    'edu.auction',
    'efo.kr',
    'eho.kr',
    'ely.kr',
    'email-temp.com',
    'emailfake.com',
    'emailfake.ml',
    'emailfreedom.ml',
    'emlhub.com',
    'emlpro.com',
    'emltmp.com',
    'emy.kr',
    'enu.kr',
    'eny.kr',
    'escritossad.net',
    'ese.kr',
    'esy.es',
    'ewa.kr',
    'exi.kr',
    'fackme.gq',
    'fassagforpresident.ga',
    'firste.ml',
    'flu.cc',
    'foy.kr',
    'gmail.gr.com',
    'gmeil.me',
    'gok.kr',
    'grigio.cf',
    'haddo.eu',
    'higogoya.com',
    'hix.kr',
    'hiz.kr',
    'hmail.us',
    'hopto.org',
    'hostingarif.me',
    'idn.vn',
    'iesco.info',
    'igg.biz',
    'iki.kr',
    'ilovemyniggers.club',
    'imouto.pro',
    'info.tm',
    'irr.kr',
    'it2-mail.tk',
    'jil.kr',
    'jto.kr',
    'junnuok.com',
    'justemail.ml',
    'kadokawa.top',
    'kro.kr',
    'lal.kr',
    'laste.ml',
    'lbe.kr',
    'lei.kr',
    'lko.co.kr',
    'lko.kr',
    'll47.net',
    'lofteone.ru',
    'lom.kr',
    'lostandalone.com',
    'loudcannabisapp.com',
    'loy.kr',
    'luk2.com',
    'luksarcenter.ru',
    'luo.kr',
    'lyrics-lagu.me',
    'mail-temp.com',
    'mail0.ga',
    'marrone.cf',
    'mbe.kr',
    'mebelnovation.ru',
    'mintemail.com',
    'mko.kr',
    'mlo.kr',
    'mooo.com',
    'mp-j.cf',
    'mp-j.ga',
    'mp-j.gq',
    'mp-j.ml',
    'mp-j.tk',
    'mr-meshkat.com',
    'mrossi.cf',
    'mrossi.gq',
    'mrossi.ml',
    'msdc.co',
    'museumplanet.com',
    'my.id',
    'my3mail.cf',
    'my3mail.ga',
    'my3mail.gq',
    'my3mail.ml',
    'my3mail.tk',
    'myeslbookclub.com',
    'mymy.cf',
    'mysafe.ml',
    'nafko.cf',
    'netricity.nl',
    'nko.kr',
    'npv.kr',
    'nuo.co.kr',
    'nuo.kr',
    'nut.cc',
    'oazis.site',
    'obo.kr',
    'okezone.bid',
    'one.pl',
    'oovy.org',
    'orangotango.ml',
    'otherinbox.com',
    'owa.kr',
    'owh.ooo',
    'oyu.kr',
    'pafnuty.com',
    'poderosamulher.com',
    'porco.cf',
    'poy.kr',
    'probatelawarizona.com',
    'pubgm.website',
    'qbi.kr',
    'ragel.me',
    'rao.kr',
    'rko.kr',
    'rosso.ml',
    'row.kr',
    'safe-mail.gq',
    'sagun.info',
    'sborra.tk',
    'seluang.com',
    'shp7.cn',
    'siambretta.com',
    'skodaauto.cf',
    'solidplai.us',
    'spamtrap.ro',
    'ssanphone.me',
    'statuspage.ga',
    'stonedogdigital.com',
    'stop-my-spam.pp.ua',
    'storeyee.com',
    'supere.ml',
    'svblog.com',
    'sytes.net',
    'tandy.co',
    'tempremail.cf',
    'tempremail.tk',
    'tgwrzqr.top',
    'thepieter.com',
    'thinktimessolve.info',
    'thumoi.com',
    'tko.co.kr',
    'tko.kr',
    'tmo.kr',
    'toi.kr',
    'tourbalitravel.com',
    'traveldesk.com',
    'trillianpro.com',
    'uha.kr',
    'uko.kr',
    'umy.kr',
    'uny.kr',
    'uola.org',
    'upy.kr',
    'us.to',
    'usa.cc',
    'uu.gl',
    'uvy.kr',
    'uyu.kr',
    'vay.kr',
    'vba.kr',
    'veo.kr',
    'viola.gq',
    'volvo-xc.tk',
    'web.id',
    'weprof.it',
    'wil.kr',
    'xxi2.com',
    'ye.vc',
    'yertxenor.tk',
    'yomail.info',
    'zalvisual.us',
    'zeroe.ml',


  );
    

  function __construct() {
    parent::phplistplugin();
  }

  function adminmenu() {
    return array(
    );
  }
  
  function upgrade($previous) {
    parent::upgrade($previous);
    return true;
  }
  
  function isYahooDisposable($address) {
    if (strpos($address,'@') !== false) {
      list($user,$domain) = explode('@',$address);
      if (stripos($domain,'yahoo') !== false) {
        return preg_match('/^[\w+]-[\w+]@/',$user);
      }
    }
    return false;
  }
  
  function isDisposable($address) {
    if ($this->isYahooDisposable($address)) {
      return true;
    }
    if (strpos($address,'@') !== false) {
      list($user,$domain) = explode('@',$address);
      return in_array(strtolower($domain),$this->disposable_domains);
    }
    return false;
  }
  
  function displaySubscribepageEdit($data) {
    
    if (!isset($data['disposable_mailblocker_text'])) {
      $data['disposable_mailblocker_text'] = s('Please enter a valid email address to subscribe to our newsletters');
    }
    if (isset($data['disposable_mailblocker_enable'])) {
      $enabled = 'checked="checked"';
    } else {
      $enabled  = '';
    }
    
    $enableHTML = s('Enable disposable email address blocker').': <input type="checkbox" name="disposable_mailblocker_enable" value="1" '.$enabled.' />';
    $errorMSG = s('Enter text to display when blocked'). ': <input type="text" name="disposable_mailblocker_text" value="'.htmlspecialchars($data['disposable_mailblocker_text']).'" />';
    return $enableHTML.'<br/>'.$errorMSG;
  }

  function processSubscribePageEdit($id) {
    
    if (!empty($_POST['disposable_mailblocker_enable'])) {
      $enabled = 1;
    } else {
      $enabled = 1;
    }
    
    Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"disposable_mailblocker_enable","%s")',
       $GLOBALS['tables']["subscribepage_data"],$id,sql_escape($enabled)));
    Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"disposable_mailblocker_text","%s")',
       $GLOBALS['tables']["subscribepage_data"],$id,sql_escape($_POST['disposable_mailblocker_text'])));
  }

  
  function displaySubscriptionChoice($pageData, $userID = 0) {
    return;
  }
 
  function validateSubscriptionPage($pageData) {
    if (!empty($pageData['disposable_mailblocker_enable']) && isset($_POST['email'])) {
      if ($this->isDisposable($_POST['email'])) {
        if (!empty($pageData['disposable_mailblocker_text'])) {
          return $pageData['disposable_mailblocker_text'];
        } else {
          return s('Please enter a valid email address to subscribe to our newsletters');
        }
      }
    }
    return '';
  }
  
  function canSend($messagedata,$subscriberdata) {
      if ($this->isDisposable($subscriberdata['email'])) {
          return false;
      }
      return true;
      
  }
 
  function validateEmailAddress($emailAddress) {
     if ($this->isDisposable($emailAddress)) {
         return false;
     }
     return true;
  }


}