slicksky / spam-blacklist-query
查看域名或IP是否被最流行的垃圾邮件列表服务列入黑名单。
v0.2.6
2023-04-17 16:47 UTC
Requires
- php: >=8.0
Requires (Dev)
- larapack/dd: ^1.1
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
- rector/rector: ^0.15.2
- sempro/phpunit-pretty-print: ^1.4
README
此小型软件包可帮助您确定域名或IP是否被最流行的垃圾邮件列表服务列入黑名单。
以下是工作原理
- 将输入域名与域名垃圾邮件黑名单服务(DNSBL URI)进行测试
- APEWS Level 1 (http://www.apews.org/)
- Scientific Spam URI (https://www.scientificspam.net/)
- SEM URI (https://spameatingmonkey.com/)
- SEM URIed (https://spameatingmonkey.com/)
- SORBS URI (http://www.sorbs.net/)
- SpamHaus Zen (https://www.spamhaus.org/zen/)
- SURBL multi (https://surbl.org/)
- URIBL multi (https://uribl.com/)
- 获取给定域名的邮件服务器列表(MX记录)。
- 获取每个邮件服务器的IP列表(A记录)。
- 将这些IP与这些IP垃圾邮件黑名单服务(DNSBL IP)进行测试
- UCEPROTECT (https://www.uceprotect.net/en/)
- DroneBL (https://dronebl.org/)
- SORBS (http://www.sorbs.net/)
- SpamHaus Zen (https://www.spamhaus.org/zen/)
- SpamCop.net (https://www.spamcop.net/)
- DSBL (https://www.dsbl.org/)
安装
在您的项目根目录中运行此命令
composer require slicksky/blacklist-spam-query
用法
require 'vendor/autoload.php'; use SlickSky\SpamBlacklistQuery\Domain; // Test a Domain $sampleDomain = 'google.com'; $domainResults = (new Domain($sampleDomain)) ->query(); // returns Collection // Get the listed records only $listedIps = $domainResults->listed(); // returns Collection // Ask if the domain or any IP records are listed $isListed = $domainResults->isListed(); // returns bool
自定义黑名单服务(DNSBL)
Config类中有4组黑名单
- Config::BLACKLISTS_IP - 用于测试IP
- Config::BLACKLISTS_URI - 用于测试域名/子域名
- Config::BLACKLISTS_EXTENDED - 最受欢迎的黑名单混合列表
- Config::BLACKLISTS_FULL - 我迄今为止找到的所有黑名单的混合列表
use SlickSky\SpamBlacklistQuery\Config; use SlickSky\SpamBlacklistQuery\Domain; $blacklists = new Config( blacklistsIp: ['dnsbl-1.uceprotect.net' => 'UCEPROTECT'], blacklistsUri: ['zen.spamhaus.org' => 'SpamHaus Zen'], ); $domainResults = (new Domain($sampleDomain, $blacklists)) ->query(); // returns Collection
进一步定制
use SlickSky\SpamBlacklistQuery\Blacklist; use SlickSky\SpamBlacklistQuery\Config; use SlickSky\SpamBlacklistQuery\MxIp; // Test a single IP $ip = new MxIp('8.8.8.8'); // Is this IP valid? $isInvalid = $ip->isInvalid(); // returns bool // Query the IP foreach (Config::BLACKLISTS_IP as $serviceHost => $serviceName) { $isListed = $ip->query( new Blacklist($serviceHost, $serviceName, $ip->reverse()), ); // returns bool } // Get the listed state $isListed = $ip->isListed(); // returns bool // Get the blacklists objects and their results $blacklistsResults = $ip->blacklists; // Collection
结果
SlickSky\SpamBlacklistQuery\Result::__set_state([ 'items' => [ SlickSky\SpamBlacklistQuery\MxRecord::__set_state([ 'host' => 'google.com', 'class' => 'IN', 'ttl' => 377, 'type' => 'MX', 'pri' => 10, 'target' => 'smtp.google.com', 'listed' => false, 'blacklists' => SlickSky\SpamBlacklistQuery\Collection::__set_state([ 'items' => [ SlickSky\SpamBlacklistQuery\Blacklist::__set_state([ 'listed' => false, 'host' => 'dnsbl-1.uceprotect.net', 'name' => 'UCEPROTECT', 'ipReverse' => 'google.com', 'responseTime' => 0.012, ]), ], ]), 'ips' => SlickSky\SpamBlacklistQuery\Collection::__set_state([ 'items' => [ SlickSky\SpamBlacklistQuery\MxIp::__set_state([ 'blacklists' => SlickSky\SpamBlacklistQuery\Collection::__set_state([ 'items' => [ SlickSky\SpamBlacklistQuery\Blacklist::__set_state([ 'listed' => false, 'host' => 'dnsbl-1.uceprotect.net', 'name' => 'UCEPROTECT', 'ipReverse' => '27.2.251.142', 'responseTime' => 0.012, ]), ], ]), 'invalid' => false, 'listed' => false, 'ip' => '142.251.2.27', ]), ], ]), ]), ], ])
许可证
Spam Blacklist Query 是开源软件,采用MIT许可证。