• 2.2.5 488b0f7a7c

    v2.2.5 Stable

    javier released this 2026-08-24 12:46:34 +00:00 | 0 commits to main since this release

    2.2.5

    Release date: 2026-08-24

    Changed

    • Release package cleaned: CHANGELOG.md and .gitignore are no longer included in the distributed ZIP file. No functional changes.

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5
    Downloads
  • 2.2.4 1f308e8917

    v2.2.4 Stable

    javier released this 2026-08-17 19:16:43 +00:00 | 1 commits to main since this release

    2.2.4

    Release date: 2026-08-17

    Added

    • Dismissible admin notice on the site and network Plugins pages when the Manager (by ROBOTSTXT) plugin is not installed and active. The Manager plugin delivers updates for this plugin and can be downloaded from https://www.robotstxt.software/plugins/robotstxt-manager/.
    • Non-dismissible warning on the plugin settings pages (site and network) when the Manager plugin is not active.

    Changed

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5

    Tests

    • PHP Coding Standards: squizlabs/php_codesniffer 3.13.6, wp-coding-standards/wpcs 3.4.1
    • WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
    • PHPStan: level 9, phpstan 2.2.8, szepeviktor/phpstan-wordpress 2.x
    • PHPCompatibility: phpcompatibility/php-compatibility 10.0.0-alpha2 (PHP 5.6-8.5 scanned; real floor 8.0)
    • WP Compatibility: johnbillion/wp-compat (WP 4.0+ scanned; real floor 5.9)
    Downloads
  • 2.2.3 d1dade498c

    v2.2.3 Stable

    javier released this 2026-06-09 12:51:37 +00:00 | 2 commits to main since this release

    2.2.3

    Release date: 2026-06-09

    Fixed

    • Fixed the DKIM "Try selector" form not working in Network Admin. The hidden page input was set to robotstxt-smtp-network-tools (non-existent) instead of the correct robotstxt-smtp-tools, which is the same slug used in both site and network contexts.

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5

    Tests

    • PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
    • WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
    • PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
    • PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
    • WP Compatibility: johnbillion/wp-compat (WP 5.9+)
    Downloads
  • 2.2.2 48cef88d49

    v2.2.2 Stable

    javier released this 2026-06-09 12:50:52 +00:00 | 3 commits to main since this release

    2.2.2

    Release date: 2026-06-09

    Fixed

    • Fixed From Email and Reply-To Email fields not clearing when submitted empty. sanitize_options() now explicitly saves '' when the field is blank, instead of silently retaining the previous value.
    • Fixed "Clear password" button having no effect. The registered sanitize_option callback was re-applying the old encrypted password when the submitted value was empty. Fixed by temporarily removing the filter before the direct update_option() call.
    • Fixed "Clear password" button submitting to options.php instead of the intended handler. A nested <form> inside the settings form is invalid HTML; replaced with a wp_nonce_url() link (GET request).
    • Fixed DKIM selector form ("Try selector" button) doing nothing. The form was inside the cached tool HTML rendered via wp_kses_post(), which strips all form elements. Moved the form to render_tools_page() where it is output as direct PHP, never passing through kses.
    • Fixed Spamhaus ZEN reporting a false "Listed" result. Response code 127.255.255.254 means the DNS query arrived via a public resolver (Cloudflare, Google DNS, etc.) — not that the IP is blocked. Spamhaus stopped supporting public-resolver queries in 2022. The plugin now detects this code (and 127.255.255.255 for rate-limit exceeded) and shows an informational error pointing to the Spamhaus web lookup tool instead.

    Added

    • DKIM selector auto-detection from MX records. When running the SPF/DKIM/DMARC tool, the plugin detects the email provider from MX host patterns and tries the provider's known selectors in order before falling back to default. Supported providers: Google Workspace, Microsoft 365, Zoho, ProtonMail, Apple iCloud, Aruba, Mailchimp.
    • "Try a specific selector" input in the Tools → Authentication panel. Allows overriding the auto-detected selector without JavaScript; the selector is preserved in the "Run checks again" URL.
    • Password field placeholder is now context-aware: shows "No password set." when no password is stored, and "Leave empty to keep the current password." when one exists.

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5

    Tests

    • PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
    • WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
    • PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
    • PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
    • WP Compatibility: johnbillion/wp-compat (WP 5.9+)
    Downloads
  • 2.2.1 30d19d38d1

    v2.2.1 Stable

    javier released this 2026-06-09 12:50:07 +00:00 | 4 commits to main since this release

    2.2.1

    Release date: 2026-06-09

    Fixed

    • Fixed the statistics chart not rendering. Chart.js was enqueued in the footer but the initialization script ran before it loaded. The init code now uses wp_add_inline_script() so WordPress guarantees the correct execution order.
    • Chart.js is now bundled locally in assets/js/chart.umd.min.js. No external CDN requests are made by the plugin.

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5

    Tests

    • PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
    • WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
    • PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
    • PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
    • WP Compatibility: johnbillion/wp-compat (WP 5.9+)
    Downloads
  • 2.2.0 ed5c696fbe

    v2.2.0 Stable

    javier released this 2026-06-09 12:49:17 +00:00 | 5 commits to main since this release

    2.2.0

    Release date: 2026-06-09

    Highlights

    • Security release fixing silent password corruption on save and credentials being stored in temporary transients.
    • WordPress minimum compatibility lowered to 5.9, PHP minimum to 8.0.
    • DMARC diagnostics now implement RFC 7489 §6.6.3 organizational domain fallback.

    Fixed

    • Fixed passwords with special characters (<, >, newlines) being silently corrupted by sanitize_text_field() on save in both per-site and network settings handlers.
    • Fixed SMTP credentials (password, Amazon SES keys) being masked with the literal string instead of the bullet character in the test email panel.
    • Fixed decrypted credentials being stored in a 10-minute transient after a test email send.
    • Fixed rate-limit enforcement: pre_wp_mail now returns false to short-circuit wp_mail() immediately instead of relying on a PHPMailer exception downstream.
    • Fixed DKIM and DMARC DNS lookups not using the timeout-protected safe_dns_lookup() wrapper, which could cause long admin page load times when DNS was unreachable.
    • Fixed rate-limit transients not being removed on plugin uninstall.

    Security

    • Removed sanitize_text_field() from password and credential fields — it strips valid characters and would silently corrupt credentials before encryption.
    • Removed map_deep( ..., 'sanitize_text_field' ) pre-sanitization from the network settings handler for the same reason.
    • Amazon SES access key and secret key are now also masked in the test email settings display.

    Added

    • DMARC diagnostics tool now implements RFC 7489 §6.6.3 organizational domain fallback. For a From address of info@sub.example.com, the tool queries _dmarc.sub.example.com first and falls back to _dmarc.example.com if no record is found, displaying which level applies.
    • Added get_organizational_domain() helper using a two-label heuristic.

    Compatibility

    • WordPress: 5.9 - 7.1
    • PHP: 8.0 - 8.5

    Tests

    • PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
    • WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
    • PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
    • PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
    • WP Compatibility: johnbillion/wp-compat (WP 5.9+)
    Downloads
  • 2.1.0 a6b592a27d

    v2.1.0 Stable

    javier released this 2026-02-09 11:57:45 +00:00 | 6 commits to main since this release

    2.1.0

    • Added data management option to control whether plugin data is deleted on uninstall (disabled by default for data preservation).
    • Added reset plugin data functionality with site-level and network-level support.
    • Added unified uninstall cleanup system that handles all add-on data (Amazon SES, Newsletter).
    • Added automatic password clearing when both host and username fields are empty to prevent orphaned credentials.
    • Changed uninstall behavior to respect user preference: data is preserved by default unless explicitly enabled.
    • Changed add-on plugins (Amazon SES, Newsletter) to no longer perform cleanup on uninstall - all cleanup is centralized in the core plugin.
    Downloads
  • 2.0.1 7929462680

    v2.0.1 Stable

    javier released this 2026-02-07 10:12:01 +00:00 | 7 commits to main since this release

    2.0.1

    • Fixed automatic password clearing when both host and username fields are empty to prevent orphaned credentials.
    Downloads
  • 2.0.0 be6f679724

    v2.0.0 Stable

    javier released this 2026-01-29 09:57:30 +00:00 | 8 commits to main since this release

    2.0.0

    • Comprehensive security audit and hardening.
    • Enhanced nonce validation across all forms and actions.
    • Improved input sanitization and validation.
    • Enhanced password encryption and migration system.
    • Secure handling of superglobals and transients.
    • Strengthened regex patterns and port number validation.
    • Fixed potential security vulnerabilities in form handling.
    • Added Reply-To email and name configuration fields for custom reply addresses.
    • Added email statistics tracking system with daily counters and visual charts.
    • Added statistics page with Chart.js visualization and multisite support.
    • Added statistics retention settings (configurable from 1 to 365 days).
    • Access control and form handling improvements.
    • WordPress Multisite rate limiting enhancements.
    • Empty password field handling.
    • Code quality improvements throughout the plugin.
    Downloads
  • 1.2.0 c98dcb7b50

    1.2.0 Stable

    javier released this 2025-11-26 08:25:54 +00:00 | 9 commits to main since this release

    1.2.0

    • Logged failed email deliveries with status and error details in the log list and detail views.
    • Captured the SMTP debug conversation for each email and surfaced it inside the log detail view.
    • Fixed fatal errors in the SMTP bootstrap by restoring configuration and log cleanup hooks.
    Downloads