Email Domain Health and Security Checker (SPF, DKIM, DMARC, BIMI, MTA-STS)

This all-in-one Email Domain Health and Security Checker analyzes critical records like MX (ensuring delivery), SPF, DKIM, and DMARC (preventing spoofing). It also checks MTA-STS for secure connections and BIMI for brand recognition and a host of other checks for a healthy system.
Email Blacklist Check
Barracuda
all.s5h.net
Spamcop
psbl.surriel.com
Spamhaus
cbl.abuseat.org
SORBS Spam
Nordspam
IP Blacklist Check
Barracuda
all.s5h.net
Spamcop
psbl.surriel.com
Spamhaus
cbl.abuseat.org
SORBS Spam
Nordspam
UCEPROTECT
<script>
document.getElementById('validatorForm').addEventListener('submit', function(event) {
    event.preventDefault();
    const domain = document.getElementById('domainInput').value;
    validateDNS(domain);
    checkBlacklist(domain);
    handleDnsChecks(domain);
});

let checksResults = {};

function validateDNS(domain) {
    const recordDivs = document.querySelectorAll('.record');
    recordDivs.forEach(div => {
        const loader = div.querySelector('.loader');
        loader.style.display = 'inline';
    });

    fetch('/wp-admin/admin-ajax.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: 'action=validate_dns_records&domain=' + encodeURIComponent(domain)
    })
    .then(response => response.json())
    .then(data => {
        ['mxRecord', 'spfRecord', 'dkimRecord', 'dmarcRecord', 'mtaStsRecord', 'bimiRecord'].forEach(recordId => {
            updateRecordStatus(recordId, data[recordId]);
        });
    });
}

function checkBlacklist(input) {
    const resultContainers = document.querySelectorAll('.result-container');
    resultContainers.forEach(container => {
        container.querySelector('.loader-icon').style.display = 'inline';
        container.querySelector('.check-icon').style.display = 'none';
        container.querySelector('.close-icon').style.display = 'none';
    });

    fetch('/wp-admin/admin-ajax.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: 'action=check_blacklist&input=' + encodeURIComponent(input)
    })
    .then(response => response.json())
    .then(data => {
        if (!data.success) {
            showError(data.data);
            return;
        }

        const blocklistResults = {
            'spamcop': 'spamcop-result',
            'sibl': 'sibl-result',
            'barracudacentral': 'barracudacentral-result',
            's5h': 's5h-result',
            'cbl': 'cbl-result',
            'psbl': 'psbl-result',
            'xbl': 'xbl-result',
            'bl': 'bl-result',
            'ip-spamcop': 'ip-spamcop-result',
            'ip-sibl': 'ip-sibl-result',
            'ip-barracudacentral': 'ip-barracudacentral-result',
            'ip-s5h': 'ip-s5h-result',
            'ip-cbl': 'ip-cbl-result',
            'ip-psbl': 'ip-psbl-result',
            'ip-xbl': 'ip-xbl-result',
            'ip-bl': 'ip-bl-result'
        };

        Object.keys(blocklistResults).forEach(key => {
            const resultContainer = document.getElementById(blocklistResults[key]);
            resultContainer.querySelector('.loader-icon').style.display = 'none';
            if (data.data[key]) {
                resultContainer.classList.add('unavailable');
                resultContainer.classList.remove('green');
                resultContainer.querySelector('.close-icon').style.display = 'inline';
                resultContainer.querySelector('.check-icon').style.display = 'none';
            } else {
                resultContainer.classList.add('green');
                resultContainer.classList.remove('unavailable');
                resultContainer.querySelector('.check-icon').style.display = 'inline';
                resultContainer.querySelector('.close-icon').style.display = 'none';
            }
        });

        updateSummaryBlacklist(data.data);
        updateSummaryIPBlacklist(data.data);
    });
}

function showError(message) {
    const errorDiv = document.querySelector('.error');
    errorDiv.style.display = 'block';
    errorDiv.textContent = message;
}

function handleDnsChecks(domain) {
    const totalChecks = 10;
    checksResults = {};

    for (let i = 1; i <= totalChecks; i++) {
        const checkElement = document.getElementById(`check${i}`);
        if (!checkElement) {
            console.warn(`Check element #${i} does not exist.`);
            continue;
        }
        const resultIcon = checkElement.querySelector('.result-icon');
        if (!resultIcon) {
            console.warn(`Result icon for check #${i} does not exist.`);
            continue;
        }

        resultIcon.style.display = 'inline';
        resultIcon.innerHTML = `<img src="https://tools.itechtics.com/wp-content/uploads/2024/05/settings-gear-svg.svg" class="loader">`;

        fetch('/wp-admin/admin-ajax.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            body: `action=dns_check&domain=${domain}&check=${i}`
        })
        .then(response => response.json())
        .then(data => {
            resultIcon.innerHTML = `${data.passed ? '<img src="https://tools.itechtics.com/wp-content/uploads/2024/05/check-circle-svg.svg" class="tick">' : '<img src="https://tools.itechtics.com/wp-content/uploads/2024/05/close-circle-svg.svg" class="cross">'}`;
            resultIcon.classList.toggle('valid', data.passed);
            checksResults[`check${i}`] = data.passed;

            // Update the summary for the record associated with this check
            updateSummaryFromChecks();        })
        .catch(error => {
            console.error('Error:', error);
            resultIcon.innerHTML = `<img src="https://tools.itechtics.com/wp-content/uploads/2024/05/close-circle-svg.svg" class="cross">`;
        });
    }
}

function updateRecordStatus(recordId, recordData) {
    const recordDiv = document.getElementById(recordId);
    const loader = recordDiv.querySelector('.loader');
    const detailsSpan = recordDiv.querySelector('.details');

    clearPreviousResults(recordDiv);

    const recordText = document.createElement('pre');
    recordText.className = 'record-text';

    if (loader) loader.style.display = 'none';
    if (recordData.available) {
        recordDiv.classList.add('green');
        recordDiv.classList.remove('unavailable');
        detailsSpan.style.display = 'block';
        if (recordId === 'mxRecord') {
            recordText.textContent = recordData.details.map(detail => `${detail.hostname} (Priority: ${detail.pref})`).join(', ');
        } else {
            recordText.textContent = recordData.record;
        }
        recordDiv.appendChild(recordText);
    } else {
        recordDiv.classList.add('unavailable');
        recordDiv.classList.remove('green');
        detailsSpan.style.display = 'none';
        recordText.textContent = 'Record not available';
        recordDiv.appendChild(recordText);
    }

    if (recordData.available && recordData.details && recordData.details.length) {
        const tableGeneratorFunction = {
            'mxRecord': generateMxRecordTable,
            'spfRecord': generateSpfRecordTable,
            'dmarcRecord': generateDmarcRecordTable,
            'dkimRecord': generateDkimRecordTable,
            'mtaStsRecord': generateMtaStsRecordTable,
            'bimiRecord': generateBimiRecordTable
        }[recordId];

        if (tableGeneratorFunction) {
            const table = tableGeneratorFunction(recordData.details);
            recordDiv.appendChild(table);
        }
    }

    updateSummary(recordId, recordData);
}

function clearPreviousResults(recordDiv) {
    const existingTable = recordDiv.querySelector('.scrollable-table-wrapper');
    if (existingTable) {
        recordDiv.removeChild(existingTable);
    }
    const existingText = recordDiv.querySelector('.record-text');
    if (existingText) {
        recordDiv.removeChild(existingText);
    }
}

  
  

  





  // Generate a table for MX record details
function generateMxRecordTable(details) {
    var table = document.createElement('table');
  	table.id = 'mxRecordTable';
  	var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Pref</th><th>Hostname</th><th>IP Address</th><th>MX Reverse Lookup</th></tr>';
    details.forEach(function(detail) {
        var row = table.insertRow(-1);
        var prefCell = row.insertCell(0);
        var hostCell = row.insertCell(1);
        var ipCell = row.insertCell(2);
      	var reverseLookupCell = row.insertCell(3);
        prefCell.textContent = detail.pref;
        hostCell.textContent = detail.hostname;
        ipCell.textContent = detail.ip;
      	reverseLookupCell.textContent = detail.mxReverseLookup;
    });
    return divWrapper;
}
  
  // Generate a table for SPF record details
function generateSpfRecordTable(details) {
    var table = document.createElement('table');
  	table.id = 'spfRecordTable';
  	var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Qualifier</th><th>Mechanism</th><th>Value</th><th>Description</th></tr>';
    details.forEach((detail, index) => {
        var row = table.insertRow();
        var cellPrefix = row.insertCell();
        var cellType = row.insertCell();
        var cellValue = row.insertCell();
        var cellDescription = row.insertCell();

        cellPrefix.textContent = index === 0 ? '' : detail.prefix;
        cellType.textContent = detail.type;
        cellValue.textContent = detail.value;
      	cellDescription.textContent = detail.description;
    });
    return divWrapper;
}

  // Generate a table for DMARC record details
  function generateDmarcRecordTable(details) {
    var table = document.createElement('table');
    table.id = 'dmarcRecordTable';
    var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Tag</th><th>Value</th><th>Name</th><th>Description</th></tr>';
    details.forEach(detail => {
        var row = table.insertRow();
        var cellTag = row.insertCell();
        var cellValue = row.insertCell();
        var cellName = row.insertCell();
        var cellDescription = row.insertCell();
      
        cellTag.textContent = detail.tag;
        cellValue.textContent = detail.value;
        cellName.textContent = detail.name;
      	cellDescription.textContent = detail.description;
    });
    return divWrapper;
}
  
  // Generate a table for DKIM record details
  function generateDkimRecordTable(details) {
    var table = document.createElement('table');
    table.id = 'dkimRecordTable';
    var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Tag</th><th>Name</th><th>Value</th></tr>';
    details.forEach(detail => {
        var row = table.insertRow();
        var cellTag = row.insertCell();
        var cellName = row.insertCell();
        var cellValue = row.insertCell();

        // Here, you could map 'tag' to a 'name' if you have a predefined list of tags and corresponding names
        const tagToName = {
            'v': 'Version',
            'k': 'Key type',
            'p': 'Public key',
            // Add other tags as needed
        };

        cellTag.textContent = detail.tag;
        cellName.textContent = tagToName[detail.tag] || detail.tag; // Fallback to tag if not found in tagToName map
        cellValue.textContent = detail.value;
    });
    return divWrapper;
}
  
  function generateMtaStsRecordTable(details) {
    var table = document.createElement('table');
    table.id = 'mtaStsRecordTable';
    var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Tag</th><th>Value</th><th>Name</th><th>Description</th></tr>';
    
    details.forEach(detail => {
        var row = table.insertRow(-1);
        var cellTag = row.insertCell(0);
        var cellValue = row.insertCell(1);
        var cellName = row.insertCell(2);
        var cellDescription = row.insertCell(3);
        cellTag.textContent = detail.tag;
        cellValue.textContent = detail.value;
        cellName.textContent = detail.name;
        cellDescription.textContent = detail.description;
    });

    return divWrapper;
}
  
  function generateBimiRecordTable(details) {
    var table = document.createElement('table');
    table.id = 'bimiRecordTable';
    var divWrapper = document.createElement('div');
  	divWrapper.className = 'scrollable-table-wrapper';
  	divWrapper.appendChild(table);
    table.innerHTML = '<tr><th>Tag</th><th>Value</th><th>Name</th><th>Description</th></tr>';

    details.forEach(detail => {
        var row = table.insertRow();
        var cellTag = row.insertCell();
        var cellValue = row.insertCell();
        var cellName = row.insertCell();
        var cellDescription = row.insertCell();

        cellTag.textContent = detail.tag;
        cellValue.textContent = detail.value;
        cellName.textContent = detail.name; // Directly using the name provided by PHP
        cellDescription.textContent = detail.description; // Directly using the description provided by PHP
    });

    return divWrapper;
}











function updateSummary(recordId, recordData) {
    const summaryDiv = document.getElementById(`summary${recordId.charAt(0).toUpperCase() + recordId.slice(1)}`);
    if (!summaryDiv) {
        console.warn(`Summary div summary${recordId.charAt(0).toUpperCase() + recordId.slice(1)} does not exist.`);
        return;
    }

    const summaryIcons = summaryDiv.querySelectorAll('.summary-icon');
    const summaryText = summaryDiv.querySelector('.summary-text');

    summaryIcons.forEach(icon => icon.style.display = 'none');

    if (recordData.available) {
        summaryIcons[0].style.display = 'inline';
        summaryText.textContent = `Great, your ${recordId.toUpperCase()} record is properly setup!`;
    } else {
        summaryIcons[2].style.display = 'inline';
        summaryText.textContent = `Your ${recordId.toUpperCase()} record needs to be setup!`;
    }

    updateSummaryFromChecks();
}

function updateSummaryFromChecks(recordId) {
    const checksSummary = {
        mxRecord: [1, 10],
        spfRecord: [2, 5],
        dkimRecord: [7],
        dmarcRecord: [3, 8],
        mtaStsRecord: [4, 9],
        bimiRecord: []
    };
  
  

    Object.keys(checksSummary).forEach(recordId => {
        const checkIds = checksSummary[recordId];
      	const recordDiv = document.getElementById(recordId);
      	const statusSpan = recordDiv.querySelector('.status');
        const summaryDiv = document.getElementById(`summary${recordId.charAt(0).toUpperCase() + recordId.slice(1)}`);
        if (!summaryDiv) {
            console.warn(`Summary div summary${recordId.charAt(0).toUpperCase() + recordId.slice(1)} does not exist.`);
            return;
        }

        const summaryIcons = summaryDiv.querySelectorAll('.summary-icon');
        const summaryText = summaryDiv.querySelector('.summary-text');

        summaryIcons.forEach(icon => icon.style.display = 'none');

        if (checkIds.length > 0) {
            const allValid = checkIds.every(checkId => checksResults[`check${checkId}`]);
            const anyInvalid = checkIds.some(checkId => !checksResults[`check${checkId}`]);
					
			
          
            if (allValid && recordDiv.classList.contains('green')) {
        			statusSpan.textContent = 'Good';
              statusSpan.style.color = '#fff';
              statusSpan.style.backgroundColor = '#38b26d';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
              summaryIcons[0].style.display = 'inline';
              summaryText.textContent = `Great, your ${recordId.toUpperCase()} record is properly setup!`;
            } else if (anyInvalid && recordDiv.classList.contains('green')) {
              statusSpan.style.color = '#fff';
        statusSpan.textContent = 'Warning';
      statusSpan.style.backgroundColor = '#ffae00';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
                summaryIcons[1].style.display = 'inline';
                summaryText.textContent = `Your ${recordId.toUpperCase()} record is setup but needs attention!`;
            } else if (!recordDiv.classList.contains('green')) {
              statusSpan.style.color = '#fff';
        		statusSpan.textContent = 'Error';
          statusSpan.style.backgroundColor = '#d65757';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
                summaryIcons[2].style.display = 'inline';
                summaryText.textContent = `Your ${recordId.toUpperCase()} record needs to be setup!`;
            }
        } else if (document.getElementById(recordId).classList.contains('green')) {
          	statusSpan.textContent = 'Good';
              statusSpan.style.color = '#fff';
              statusSpan.style.backgroundColor = '#38b26d';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
            summaryIcons[0].style.display = 'inline';
            summaryText.textContent = `Great, your ${recordId.toUpperCase()} record is properly setup!`;
        } else {
          	statusSpan.style.color = '#fff';
        		statusSpan.textContent = 'Error';
          statusSpan.style.backgroundColor = '#d65757';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
            summaryIcons[2].style.display = 'inline';
            summaryText.textContent = `Your ${recordId.toUpperCase()} record needs to be setup!`;
        }
    });

    calculateOverallScore();
}

function updateSummaryBlacklist(data) {
  	const blacklistDiv = document.getElementById('emailBlacklist');
    const statusSpan = blacklistDiv.querySelector('.status');
    const summaryDiv = document.getElementById('summaryEmailBlacklist');
    if (!summaryDiv) {
        console.warn('Summary div summaryEmailBlacklist does not exist.');
        return;
    }

    const summaryIcons = summaryDiv.querySelectorAll('.summary-icon');
    const summaryText = summaryDiv.querySelector('.summary-text');

    summaryIcons.forEach(icon => icon.style.display = 'none');
  	blacklistDiv.querySelector('.loader').style.display = 'none';

    const values = Object.values(data);
    const allPassed = values.every(value => !value);
    const partiallyPassed = values.some(value => value);

    if (allPassed) {
      	statusSpan.textContent = 'Good';
              statusSpan.style.color = '#fff';
              statusSpan.style.backgroundColor = '#38b26d';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[0].style.display = 'inline';
        summaryText.textContent = 'Great, your domain is not blacklisted!';
    } else if (partiallyPassed) {
      	statusSpan.style.color = '#fff';
        statusSpan.textContent = 'Warning';
      statusSpan.style.backgroundColor = '#ffae00';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[1].style.display = 'inline';
        summaryText.textContent = 'Attention, your domain is partially blacklisted!';
    } else {
      	statusSpan.style.color = '#fff';
        		statusSpan.textContent = 'Error';
          statusSpan.style.backgroundColor = '#d65757';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[2].style.display = 'inline';
        summaryText.textContent = 'Attention, your domain is blacklisted!';
    }

    calculateOverallScore();
}

function updateSummaryIPBlacklist(data) {
  const blacklistDiv = document.getElementById('ipBlacklist');
    const statusSpan = blacklistDiv.querySelector('.status');
    const summaryDiv = document.getElementById('summaryIpBlacklist');
    if (!summaryDiv) {
        console.warn('Summary div summaryIpBlacklist does not exist.');
        return;
    }

    const summaryIcons = summaryDiv.querySelectorAll('.summary-icon');
    const summaryText = summaryDiv.querySelector('.summary-text');

    summaryIcons.forEach(icon => icon.style.display = 'none');
  	blacklistDiv.querySelector('.loader').style.display = 'none';

    const values = Object.values(data);
    const allPassed = values.every(value => !value);
    const partiallyPassed = values.some(value => value);

    if (allPassed) {
      	statusSpan.textContent = 'Good';
              statusSpan.style.color = '#fff';
              statusSpan.style.backgroundColor = '#38b26d';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[0].style.display = 'inline';
        summaryText.textContent = 'Great, your IP is not blacklisted!';
    } else if (partiallyPassed) {
      	statusSpan.style.color = '#fff';
        statusSpan.textContent = 'Warning';
      statusSpan.style.backgroundColor = '#ffae00';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[1].style.display = 'inline';
        summaryText.textContent = 'Attention, your IP is partially blacklisted!';
    } else {
      	statusSpan.style.color = '#fff';
        		statusSpan.textContent = 'Error';
          statusSpan.style.backgroundColor = '#d65757';
              statusSpan.style.borderRadius = '5px';
              statusSpan.style.padding = '0px 5px';
        summaryIcons[2].style.display = 'inline';
        summaryText.textContent = 'Attention, your IP is blacklisted!';
    }

    calculateOverallScore();
}

function calculateOverallScore() {
    let score = 0;

    const tickPoints = {
        summarySpfRecord: 30,
        summaryDkimRecord: 15,
        summaryDmarcRecord: 15,
        summaryMtaStsRecord: 10,
        summaryBimiRecord: 5,
        summaryEmailBlacklist: 15,
        summaryIpBlacklist: 10
    };

    const mxRecordDiv = document.getElementById('summaryMxRecord');
    if (mxRecordDiv && mxRecordDiv.querySelector('.tick[style="display: inline;"]')) {
        for (const [summaryId, points] of Object.entries(tickPoints)) {
            const summaryDiv = document.getElementById(summaryId);
            if (summaryDiv && summaryDiv.querySelector('.tick[style="display: inline;"]')) {
                score += points;
            }
        }
    }

    const scoreDiv = document.getElementById('overallScore');
    if (scoreDiv) {
        scoreDiv.textContent = `${score}/100`;
        if (score <= 50) {
            scoreDiv.style.color = 'red';
        } else if (score <= 75) {
            scoreDiv.style.color = 'orange';
        } else {
            scoreDiv.style.color = 'green';
        }
    }
}

document.addEventListener('DOMContentLoaded', function() {
    const records = document.querySelectorAll('.record');
    records.forEach(record => {
        record.addEventListener('click', function(event) {
            if (event.target === this || (!event.target.closest('table') && !event.target.closest('.scrollable-table-wrapper'))) {
                if (this.classList.contains('expanded')) {
                    this.classList.remove('expanded');
                    this.classList.add('collapsed');
                } else {
                    this.classList.add('expanded');
                    this.classList.remove('collapsed');
                }
            }
        });
    });
});
</script>

What is Email Domain Health and Security Checker Tool?

Our email domain health and security checker tool analyzes your domain’s configuration to ensure your DNS and Email server are properly configured so that the emails are delivered securely and don’t fall prey to spamming, spoofing or other malicious activities.
Think of it like a checkup for your email system. It examines critical settings like:

  • MX Records: These determine where your emails are delivered.
  • SPF, DKIM, and DMARC: These work together to authenticate your emails and prevent spammers from forging your sender address.
  • BIMI: This enhances email security by allowing you to display a logo next to your emails in compatible inboxes.
  • MTA-STS: This strengthens security by specifying authorized servers to send emails on your domain’s behalf.
    By analyzing these elements, the checker provides a report highlighting potential vulnerabilities and areas for improvement.
    This helps you:
  • Reduce spam: By ensuring only authorized servers can send emails from your domain.
  • Improve email deliverability: By verifying your emails are coming from a legitimate source.
  • Protect your reputation: By preventing spammers from impersonating your domain.
  • Boost security: By implementing advanced authentication protocols.

Overall, an email domain health and security checker is a valuable tool for businesses and individuals who rely on email for communication. It helps ensure your emails reach their intended recipients safely and securely.

How it Works

  1. Enter your domain name (we’ll provide a clear placeholder in the input field).
  2. Hit the “Free Scan” button and let our powerful tool do the work.
  3. Sit back as your DNS records are fetched and analyzed in a few seconds.
  4. We present findings with easy-to-understand explanations and color indicators (green for good, orange for warnings, red for critical issues).

What Sets Us Apart?

Deep Dive Analysis

Our checker goes beyond basic checks. It analyzes MX, SPF, DKIM, DMARC, MTA-STS, and BIMI records, uncovering hidden vulnerabilities that could impact your email security.

Expert Guidance

Don’t worry about interpreting complex results. Our tool provides clear recommendations for improvement, making email security effortless for everyone.

Blacklist checks

Our tool scans your domain through the most popular email and IP blacklists (RBLs and DNSBLs). Most email service providers check these blacklists for domains and IPs. If listed, the emails from that particular domain or IP are rejected. It’s important to keep your domain and IP whitelisted in all the popular blacklists.

Benefits of using our tool

Soar Past Spam Filters

Stop worrying about emails landing in spam! Our checker identifies and rectifies email security issues, ensuring your messages reach intended inboxes and avoid spam filters.

Build Trust and Credibility

By showcasing a secure email infrastructure, our tool helps establish your brand as trustworthy and reliable. This fosters stronger relationships and increases customer confidence.

Fortify Your Defenses

Our checker acts as your email security shield, identifying vulnerabilities and preventing email spoofing attempts. This keeps your data and brand reputation safe from malicious actors.

Effortless Efficiency

Save valuable time and resources! Our one-click analysis removes the complexity of email security management, allowing you to focus on what matters most – your business.

FAQs

  • What protocols does your tool check?

    Our Email Security & Deliverability Checker goes beyond basic checks, acting as a multi-layered guardian for your email infrastructure. Here’s a breakdown of the key protocols it analyzes:

    MX Records:
     Think of these as the GPS for your emails. The checker verifies their configuration, ensuring emails land in the right inboxes.

    SPF, DKIM & DMARC:
     This trio forms a powerful security alliance. SPF prevents email spoofing, DKIM adds a digital signature for authenticity, and DMARC instructs email servers how to handle unauthenticated emails.

    MTA-STS:
     This enforces a secure connection (TLS) for email delivery, safeguarding your messages from data breaches during transmission.

    BIMI:
     This emerging protocol allows you to display your brand logo next to emails in some inboxes, boosting recognition and trust.

  • Do I need any technical expertise to use your tool?

    No technical expertise is required to use our tool. All you have to do is enter your domain name and we’ll handle the complex analysis, providing clear results.

  • How long does it take to scan my email security and deliverability?

    You’ll receive your scan results within seconds from our email deliverability checker.

  • What information will your tool tell me about my email setup?

    Once you enter a website in the scan box, and click “Analyze”, we provide a detailed security review. This includes MX, SPF, DMARC, DKIM, MTA-STS, and BIMI tests. If they are available, the value is shared, otherwise, you get a ‘record not available’ message. The results also include a detailed email blacklist check.

  • How do I understand the results of the scan?

    You don’t need any technical expertise to understand the results of the scan as the details are shared in a simple, tabular form. In case you have any issues, you can always contact us here.

  • Do you offer a free trial of your tool?

    The tool is free for use so there is no need for a trial.

  • Do you offer any customer support for your tool?

    Yes, customer support is available via email and live chat.

  • I have a suggestion for the tool. How can I contact you?

    For feedback, suggestions and feature requests, you can always contact us with details.

Summary

0/100
Email Deliverability Score
Copy report link
Share on:
Your Feedback & Comments
Having Trouble?
Hire us to solve your domain email problems
Get in touch
We're Here to Care
Fillout the form below
We Value Your Feedback
Fillout the form below