PHPackages                             palpalani/laravel-dns-deny-list-check - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. palpalani/laravel-dns-deny-list-check

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

palpalani/laravel-dns-deny-list-check
=====================================

A modern Laravel package for checking IP addresses against verified DNS-based blacklists (DNSBL/RBL) to ensure email deliverability

1.0.0(7mo ago)23.9k↓50%1MITPHPPHP ^8.3CI passing

Since Feb 26Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/palpalani/laravel-dns-deny-list-check)[ Packagist](https://packagist.org/packages/palpalani/laravel-dns-deny-list-check)[ Docs](https://github.com/palpalani/laravel-dns-deny-list-check)[ GitHub Sponsors](https://github.com/palpalani)[ RSS](/packages/palpalani-laravel-dns-deny-list-check/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (12)Versions (13)Used By (0)

Laravel DNS Deny List Check
===========================

[](#laravel-dns-deny-list-check)

[![Latest Version on Packagist](https://camo.githubusercontent.com/2954418e8c45a4e019c647b8e200750281c2eb16c00c863762d6a43a67abeb7e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/palpalani/laravel-dns-deny-list-check)[![Total Downloads](https://camo.githubusercontent.com/641f3f281caf8426f36c884453802c3ad2ff2077e1dada696a21f65ba323925e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/palpalani/laravel-dns-deny-list-check)[![License](https://camo.githubusercontent.com/30d54781a99e9802c0c2610d3b63a91ceddc33ce13afb3ed7e8f8206cd4717d6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/palpalani/laravel-dns-deny-list-check)[![PHP Version](https://camo.githubusercontent.com/93b4c46c20d48ff1560cf096a4554b4d2a7f2c0e6ed8d57af078dfa3c103dbde/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/palpalani/laravel-dns-deny-list-check)[![Laravel Version](https://camo.githubusercontent.com/2557965064af1e052691dbe4b1770d6922ce108fe1a70208b645a46b1af372fe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e7825323025374325323031322e782d7265642e7376673f7374796c653d666c61742d737175617265)](https://laravel.com)

[![GitHub Tests Action Status](https://camo.githubusercontent.com/bd36ef7bc7be384b3fcf607760cf20d551471e6f718bc23ae31937fab08d8a40/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/palpalani/laravel-dns-deny-list-check/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub PHPStan Action Status](https://camo.githubusercontent.com/8a21a0ea607877d3c9ad2c75e0f87fdaa381f870b69fe477cd4559775346eaf9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2f616e616c7973652e796d6c3f6272616e63683d6d61696e266c6162656c3d7068707374616e267374796c653d666c61742d737175617265)](https://github.com/palpalani/laravel-dns-deny-list-check/actions?query=workflow%3Aanalyse+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/28cbaa7233533f7b358790a60735c57f0aa5efca1322a6ea8da8a34009458bdc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/palpalani/laravel-dns-deny-list-check/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![GitHub Check Links Action Status](https://camo.githubusercontent.com/a5a8bf373a2ce841ecf3fd54857694cac5d1a820a7766b67bf644c20a372a8e7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f70616c70616c616e692f6c61726176656c2d646e732d64656e792d6c6973742d636865636b2f636865636b2d6c696e6b732e796d6c3f6272616e63683d6d61696e266c6162656c3d6c696e6b253230636865636b267374796c653d666c61742d737175617265)](https://github.com/palpalani/laravel-dns-deny-list-check/actions?query=workflow%3Acheck-links+branch%3Amain)

A modern, production-ready Laravel package for checking email server IP addresses against **verified DNS-based blacklists (DNSBL/RBL)**. This package helps ensure email deliverability by testing your mail server against 12 carefully curated, actively maintained blacklist services.

📑 Table of Contents
-------------------

[](#-table-of-contents)

- [Features](#-features)
- [Requirements](#-requirements)
- [Architecture](#%EF%B8%8F-architecture)
- [Installation](#-installation)
- [Configuration](#configuration-optional)
- [Usage](#-usage)
- [Testing](#-testing)
- [Production Considerations](#-production-considerations)
- [Documentation](#-documentation)
- [Tools &amp; Standards](#-tools--standards)
- [Quality Metrics](#-quality-metrics)
- [Contributing](#-contributing)
- [Security](#-security-vulnerabilities)
- [License](#-license)

✨ Features
----------

[](#-features)

- 🔍 **Production-Verified DNSBL Servers** - Only 12 verified, functional servers (January 2025)
- 🚀 **Modern PHP 8.3+** - Uses readonly properties, constructor promotion, and strict typing
- 🌐 **Full IPv4 &amp; IPv6 Support** - Handles both IP versions with proper reverse notation
- ⚡ **Performance Optimized** - Configurable timeouts and optional concurrent checking
- 📊 **Detailed Statistics** - Comprehensive response data with performance metrics
- 🎯 **Tier-Based Checking** - Critical, Important, and Supplementary DNSBL categories
- 🔧 **Laravel Integration** - Service provider, facade, and configuration support
- ✅ **Comprehensive Testing** - 47 tests with 374 assertions using Pest
- 🛡️ **Edge Case Handling** - Graceful error handling and validation
- 🔒 **Production Ready** - Zero false positives, reliable DNSBL servers only
- 📈 **Type Safe** - Full PHPStan static analysis coverage

📋 Requirements
--------------

[](#-requirements)

- PHP **8.3** or higher
- Laravel **11.x** or **12.x**
- ext-dns (for DNS lookups)

🏗️ Architecture
---------------

[](#️-architecture)

Built with modern PHP and Laravel best practices:

- **Type Safety**: Full type hints, strict types, and PHPStan analysis
- **Testing**: Comprehensive Pest test suite with high coverage
- **Code Quality**: Laravel Pint for code formatting, PHPStan for static analysis
- **Performance**: Optimized DNS queries with configurable timeouts

🚀 Installation
--------------

[](#-installation)

Install the package via Composer:

```
composer require palpalani/laravel-dns-deny-list-check
```

The service provider will be automatically registered thanks to Laravel's package auto-discovery.

### Configuration (Optional)

[](#configuration-optional)

Publish the configuration file to customize DNSBL servers:

```
php artisan vendor:publish --provider="palPalani\DnsDenyListCheck\DnsDenyListCheckServiceProvider" --tag="laravel-dns-deny-list-check-config"
```

This creates `config/dns-deny-list-check.php` with 12 production-verified DNSBL servers:

```
return [
    'servers' => [
        // TIER 1: CRITICAL - Most trusted DNSBLs
        ['name' => 'SpamCop Blocking List', 'host' => 'bl.spamcop.net', 'tier' => 1, 'priority' => 'critical'],
        ['name' => 'Barracuda Reputation Block List', 'host' => 'b.barracudacentral.org', 'tier' => 1, 'priority' => 'critical'],
        ['name' => 'UCEPROTECT Level 1', 'host' => 'dnsbl-1.uceprotect.net', 'tier' => 1, 'priority' => 'critical'],

        // TIER 2: IMPORTANT - Specialized authority DNSBLs
        ['name' => 'DroneB Anti-Abuse', 'host' => 'dnsbl.dronebl.org', 'tier' => 2, 'priority' => 'important'],
        ['name' => 'Backscatterer IPS', 'host' => 'ips.backscatterer.org', 'tier' => 2, 'priority' => 'important'],
        // ... additional servers
    ],
];
```

📖 Usage
-------

[](#-usage)

### Basic Usage

[](#basic-usage)

```
use palPalani\DnsDenyListCheck\DnsDenyListCheck;

// Using the class directly
$checker = new DnsDenyListCheck();
$result = $checker->check('8.8.8.8');

// Using the facade
use palPalani\DnsDenyListCheck\DnsDenyListCheckFacade as DnsDenyListCheck;

$result = DnsDenyListCheck::check('8.8.8.8');
```

### Response Structure

[](#response-structure)

```
[
    'success' => true,
    'message' => 'IP check completed: 0 blacklists found IP as listed out of 12 total servers checked.',
    'data' => [
        [
            'host' => 'bl.spamcop.net',
            'listed' => false,
            'response_time' => 0.123,
            'tier' => 1,
            'priority' => 'critical'
        ],
        // ... more results
    ],
    'stats' => [
        'total_checked' => 12,
        'total_listed' => 0,
        'total_unlisted' => 12,
        'total_errors' => 0,
        'average_response_time' => 0.098
    ],
    'ip_version' => 'IPv4',
    'checked_at' => '2025-01-22T10:30:45.123456Z'
]
```

### Advanced Configuration

[](#advanced-configuration)

```
use palPalani\DnsDenyListCheck\DnsDenyListCheck;

// Custom server list
$customServers = [
    ['name' => 'Custom DNSBL', 'host' => 'custom.dnsbl.com', 'tier' => 1, 'priority' => 'critical']
];

$checker = new DnsDenyListCheck(
    dnsblServers: $customServers,
    timeoutSeconds: 15,
    ipv6Enabled: true,
    concurrentEnabled: false
);

$result = $checker->check('2001:db8::1'); // IPv6 support
```

### Laravel Service Container

[](#laravel-service-container)

```
// In a service provider
$this->app->bind(DnsDenyListCheck::class, function ($app) {
    return new DnsDenyListCheck(
        timeoutSeconds: config('dns-deny-list-check.timeout', 10)
    );
});

// In a controller
public function checkIp(DnsDenyListCheck $checker, Request $request)
{
    $result = $checker->check($request->ip());

    return response()->json($result);
}
```

🧪 Testing
---------

[](#-testing)

Run the comprehensive test suite:

```
# Run all tests
composer test

# Run tests with coverage
composer test-coverage
```

The package includes **47 tests with 374 assertions** using [Pest](https://pestphp.com) covering:

- ✅ IPv4 and IPv6 validation
- ✅ DNSBL server connectivity
- ✅ Error handling and edge cases
- ✅ Facade functionality
- ✅ Performance testing
- ✅ Configuration validation
- ✅ Type safety and static analysis

### Code Quality

[](#code-quality)

```
# Run PHPStan static analysis
composer analyse

# Fix code style with Laravel Pint
composer format
```

🔒 Production Considerations
---------------------------

[](#-production-considerations)

### DNSBL Server Reliability

[](#dnsbl-server-reliability)

This package uses **only verified, production-ready DNSBL servers** (January 2025):

- ❌ **Removed non-functional services**: SORBS (shut down June 2024), SpamRats, defunct Spamhaus services
- ✅ **12 verified servers**: Tested for DNS resolution, active maintenance, and low false positives
- 🎯 **Tier-based approach**: Critical (3), Important (4), Supplementary (5) categories

### Performance Tips

[](#performance-tips)

```
// For high-volume applications
$checker = new DnsDenyListCheck(
    timeoutSeconds: 5,        // Reduce timeout for faster responses
    concurrentEnabled: true   // Enable concurrent checking (when available)
);

// Cache results to avoid repeated checks
Cache::remember("dnsbl_check_{$ip}", 3600, function () use ($ip, $checker) {
    return $checker->check($ip);
});
```

### Error Handling

[](#error-handling)

```
$result = DnsDenyListCheck::check($ip);

if (!$result['success']) {
    Log::warning('DNSBL check failed', [
        'ip' => $ip,
        'error' => $result['message']
    ]);

    // Fallback logic
    return ['status' => 'unknown', 'reason' => 'DNSBL service unavailable'];
}

// Check if IP is blacklisted
$blacklisted = $result['stats']['total_listed'] > 0;
```

📚 Documentation
---------------

[](#-documentation)

Comprehensive documentation is available in the repository:

- [API Reference](docs/api.md)
- [Configuration Guide](docs/configuration.md)
- [Performance Optimization](docs/performance.md)
- [DNSBL Server Guide](docs/dnsbl-servers.md)

🔧 Tools &amp; Standards
-----------------------

[](#-tools--standards)

This package uses modern development tools and follows best practices:

- **Testing**: [Pest PHP](https://pestphp.com) - A delightful PHP testing framework
- **Code Style**: [Laravel Pint](https://laravel.com/docs/pint) - Opinionated PHP code style fixer
- **Static Analysis**: [PHPStan](https://phpstan.org) with [Larastan](https://github.com/larastan/larastan)
- **CI/CD**: GitHub Actions with comprehensive test matrix
- **Code Quality**: Automated code style fixes and static analysis on every push

📊 Quality Metrics
-----------------

[](#-quality-metrics)

- ✅ **100% Type Coverage** - Full type hints and PHPStan analysis
- ✅ **47 Tests** - Comprehensive test suite with Pest
- ✅ **374 Assertions** - Thorough validation of all features
- ✅ **Zero Dependencies** - No external HTTP dependencies, uses native DNS resolution
- ✅ **Production Verified** - Only active, reliable DNSBL servers

📋 Changelog
-----------

[](#-changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

ToDo
----

[](#todo)

📋 Alternative Blacklist Checking Techniques

Here are other methods beyond DNS-based blacklists for email deliverability checking:

1. API-Based Reputation Services

```
// Example: Reputation services with REST APIs
$reputation_apis = [
    'Microsoft SNDS' => 'https://postmaster.live.com/snds/', // Requires signup
    'Google Postmaster Tools' => 'https://www.gmail.com/postmaster/',
    'Yahoo Sender Hub' => 'https://senders.yahooinc.com/',
    'Mailgun Reputation API' => 'https://api.mailgun.net/v4/ip/reputation',
    'SendGrid Reputation' => 'https://api.sendgrid.com/v3/ips/{ip}/reputation'
];
```

2. Multi-Service Aggregators

```
// Services that check multiple blacklists via single API
$aggregator_services = [
    'MXToolbox API' => 'https://api.mxtoolbox.com/api/v1/monitor',
    'WhatIsMyIPAddress API' => 'https://api.whatismyipaddress.com/blacklist',
    'DNSlytics API' => 'https://api.dnslytics.com/v1/ip2blacklists',
    'HackerTarget API' => 'https://api.hackertarget.com/blacklistchecker/',
    'ipqualityscore.com' => 'https://ipqualityscore.com/api/json/ip/{api_key}/{ip}'
];
```

3. SURBL/URIBL Domain Checking

```
// Check domains/URLs instead of IPs
$domain_blacklists = [
    'SURBL Multi' => 'multi.surbl.org',
    'URIBL Multi' => 'multi.uribl.com',
    'URIBL Black' => 'black.uribl.com',
    'URIBL Red' => 'red.uribl.com',
    'Spamhaus DBL' => 'dbl.spamhaus.org'
];

// Example usage: Check if domain is blacklisted
function checkDomainBlacklist($domain, $blacklist) {
    $query = $domain . '.' . $blacklist . '.';
    return checkdnsrr($query, 'A');
}
```

4. SMTP Test Connections

```
// Test actual SMTP delivery capability
function testSmtpDelivery($ip, $targetMx) {
    $socket = fsockopen($targetMx, 25, $errno, $errstr, 10);
    if (!$socket) return false;

    $response = fgets($socket);
    if (strpos($response, '220') !== 0) {
        fclose($socket);
        return false;
    }

    fputs($socket, "HELO test.com\r\n");
    $response = fgets($socket);

    fclose($socket);
    return strpos($response, '250') === 0;
}
```

5. GeoIP &amp; ASN-Based Checks

```
// Check IP geography and network ownership
$geolocation_services = [
    'MaxMind GeoIP2' => 'https://dev.maxmind.com/geoip/geoip2/',
    'IPinfo.io' => 'https://ipinfo.io/{ip}/json',
    'ip-api.com' => 'http://ip-api.com/json/{ip}',
    'IPGeolocation.io' => 'https://api.ipgeolocation.io/ipgeo'
];

// Example: Block specific countries/ASNs known for spam
function checkGeoReputation($ip) {
    $high_risk_countries = ['CN', 'RU', 'KP']; // Example
    $high_risk_asns = ['AS12345', 'AS67890']; // Example spam networks

    // Implementation would check against these lists
    return ['risk_level' => 'low', 'country' => 'US', 'asn' => 'AS15169'];
}
```

6. Machine Learning Reputation Scoring

```
// AI/ML-based reputation services
$ml_reputation_services = [
    'AWS GuardDuty' => 'https://aws.amazon.com/guardduty/',
    'Microsoft Defender' => 'https://docs.microsoft.com/en-us/microsoft-365/security/',
    'Cisco Talos' => 'https://talosintelligence.com/reputation_center',
    'VirusTotal' => 'https://www.virustotal.com/api/v3/ip_addresses/{ip}',
    'AbuseIPDB' => 'https://api.abuseipdb.com/api/v2/check'
];
```

7. Real-Time Threat Intelligence

```
// Live threat feeds and intelligence services
$threat_intelligence = [
    'Emerging Threats' => 'https://rules.emergingthreats.net/',
    'AlienVault OTX' => 'https://otx.alienvault.com/api/v1/indicators/',
    'ThreatCrowd' => 'https://www.threatcrowd.org/searchApi/v2/ip/report/',
    'IBM X-Force' => 'https://api.xforce.ibmcloud.com/ipr/{ip}',
    'Shodan' => 'https://api.shodan.io/shodan/host/{ip}'
];
```

8. Email Authentication Checks

```
// Verify SPF, DKIM, DMARC configuration
function checkEmailAuthentication($domain) {
    $checks = [];

    // SPF Record
    $spf = dns_get_record($domain, DNS_TXT);
    $checks['spf'] = array_filter($spf, fn($r) => str_contains($r['txt'], 'v=spf1'));

    // DMARC Record
    $dmarc = dns_get_record('_dmarc.' . $domain, DNS_TXT);
    $checks['dmarc'] = array_filter($dmarc, fn($r) => str_contains($r['txt'], 'v=DMARC1'));

    // DKIM (requires knowing selector)
    // $dkim = dns_get_record('selector._domainkey.' . $domain, DNS_TXT);

    return $checks;
}
```

9. Historical Analysis

```
// Track IP reputation over time
$historical_services = [
    'Passive DNS' => 'https://www.circl.lu/services/passive-dns/',
    'SecurityTrails' => 'https://api.securitytrails.com/v1/history/{ip}/a',
    'WhoisXML API' => 'https://reverse-ip-api.whoisxmlapi.com/api/v1',
    'DomainTools' => 'https://api.domaintools.com/v1/{ip}/host-domains/'
];
```

10. Integration Examples

```
// Combined approach using multiple techniques
class ComprehensiveReputationChecker {
    public function checkReputation($ip) {
        return [
            'dnsbl' => $this->checkDnsbl($ip),           // Your current implementation
            'api_reputation' => $this->checkApiReputation($ip),
            'smtp_test' => $this->testSmtpConnectivity($ip),
            'geo_analysis' => $this->checkGeoReputation($ip),
            'threat_intel' => $this->checkThreatIntelligence($ip),
            'final_score' => $this->calculateFinalScore()
        ];
    }
}
```

🤝 Contributing
--------------

[](#-contributing)

We welcome contributions! Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

### Development Setup

[](#development-setup)

```
# Clone the repository
git clone https://github.com/palpalani/laravel-dns-deny-list-check.git
cd laravel-dns-deny-list-check

# Install dependencies
composer install

# Run tests
composer test

# Run static analysis
composer analyse

# Fix code style with Laravel Pint
composer format
```

### Contribution Guidelines

[](#contribution-guidelines)

- ✅ Follow [PSR-12](https://www.php-fig.org/psr/psr-12/) coding standards (enforced by Laravel Pint)
- ✅ Write tests for new features using Pest
- ✅ Ensure PHPStan analysis passes (`composer analyse`)
- ✅ Update documentation accordingly
- ✅ Ensure all tests pass before submitting PR
- ✅ Follow semantic versioning for releases

🔐 Security Vulnerabilities
--------------------------

[](#-security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

For security-related issues, please email  instead of using the issue tracker.

📦 Versioning
------------

[](#-versioning)

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/palpalani/laravel-dns-deny-list-check/tags).

👥 Credits
---------

[](#-credits)

- [palPalani](https://github.com/palpalani) - Creator and maintainer
- [All Contributors](../../contributors) - Thank you for your contributions!

### Acknowledgments

[](#acknowledgments)

- [Spatie](https://spatie.be) - For excellent Laravel package tools and inspiration
- DNSBL Service Providers - For maintaining public blacklist services
- Laravel Community - For feedback and testing

📄 License
---------

[](#-license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

---

 **🚀 Ready to ensure email deliverability?**
 Install Laravel DNS Deny List Check and start protecting your email reputation today!

###  Health Score

51

—

FairBetter than 96% of packages

Maintenance78

Regular maintenance activity

Popularity25

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 71.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~167 days

Recently: every ~309 days

Total

11

Last Release

233d ago

Major Versions

0.7.1 → 1.0.02025-09-22

PHP version history (3 changes)0.1.0PHP ^8.0

0.7.0PHP ^8.2

0.7.1PHP ^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/716695?v=4)[Palaniappan P](/maintainers/palpalani)[@palpalani](https://github.com/palpalani)

---

Top Contributors

[![palpalani](https://avatars.githubusercontent.com/u/716695?v=4)](https://github.com/palpalani "palpalani (105 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (41 commits)")

---

Tags

emailpalpalanilaravel-dns-deny-list-checksending-ipblacklisted

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/palpalani-laravel-dns-deny-list-check/health.svg)

```
[![Health](https://phpackages.com/badges/palpalani-laravel-dns-deny-list-check/health.svg)](https://phpackages.com/packages/palpalani-laravel-dns-deny-list-check)
```

###  Alternatives

[propaganistas/laravel-disposable-email

Disposable email validator

5762.6M6](/packages/propaganistas-laravel-disposable-email)[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[xammie/mailbook

Laravel Mail Explorer

482458.3k1](/packages/xammie-mailbook)[wnx/laravel-sends

Keep track of outgoing emails in your Laravel application.

200427.3k](/packages/wnx-laravel-sends)[spatie/laravel-mailcoach-sdk

An SDK to easily work with the Mailcoach API in Laravel apps

41290.2k1](/packages/spatie-laravel-mailcoach-sdk)[spatie/laravel-mailcoach-mailer

The driver for sending transactional mails using Mailcoach in Laravel

25325.1k](/packages/spatie-laravel-mailcoach-mailer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
