Skip to content

Latest commit

 

History

History
605 lines (391 loc) · 46.1 KB

CHANGELOG.md

File metadata and controls

605 lines (391 loc) · 46.1 KB

Changelog

All notable changes to this project will be documented in this file. The changes in this project follow Convention Commits.

(2024-12-15)

0.10.0 (2024-12-15)

  • feat(core)!: Update async-smtp to 0.9 (#1520) (297ce4f), closes #1520
  • feat!: Add /v1/{check_email,bulk} endpoints with throttle&concurrency (#1537) (08522e4), closes #1537
  • fix(core)!: Clean up CheckEmailInput (#1531) (b97b9ff), closes #1531
  • refactor!: Use config-rs instead of env vars (#1530) (bcd2dc8), closes #1530
  • feat(backend)!: Remove /v0/bulk endpoints (#1421) (522f324), closes #1421
  • fix!(core): Bump timeout to 45s, set retries to 1 (#1406) (22e8e3e), closes #1406
  • refactor!: Use verify method for known providers (#1366) (5ca4dfa), closes #1366

Bug Fixes

  • Add backend_name in /v0/check_email (a738fae)
  • Add HoneyPot rule (fb428ef)
  • backend: CSV download retrieves all results (#1362) (b3670fc)
  • backend: Fix docker CTRL+C (3a7245f)
  • backend: Fix env var for multiple queues (ed19166)
  • backend: Update sqlx to 0.7 (#1390) (7198f87)
  • ci: actions/download-artifact@v4 (ec48fec)
  • ci: Fix Windows build (#1397) (ab2bb41)
  • ci: Use v4 of upload-artifacts (fa7f438)
  • ci: Use v4 of upload-artifacts (b97d181)
  • core: Fix gmail test (ea80690)
  • core: Fix hotmail/outlook checks (5e4bf16)
  • core: Headless check for Microsoft365 too (#1346) (682cc2d)
  • core: More robust Hotmail invalid check (ee741f4)
  • core: Prefer empty MX lookup when Err NoRecordsFound (#1409) (d4b5ef9)
  • core: Use semver in sentry (03e6c97)
  • core: Use Smtp for Gmail by default (8e79884)
  • core: Use tagged enum representation (ffde851)
  • Fix dockerfile (ce5067e)
  • Fix dockerfile (83d70d8)
  • Fix dockerfile build (95aeecb)
  • Fix Dockerfiles (e9fb1e3)
  • Fix duplicate yahoo_verif_method field in default() inputs (#1428) (b7c51d5)
  • Only do headless for non-365 hotmail emails (1c52bdc)
  • Put Smtp debug details in Debug struct (5b71ca5)
  • Remove local_ip retrieval (ff8e599)
  • Revert Cargo files (#1389) (96a2278)
  • rm .rustfmt.toml (#1524) (1691d2d)
  • Support queues in env var (39655d5)
  • Typo in expect of RCH_VERIF_METHOD (#1405) (c50d8eb)

Features

  • Add back RabbitMQ-based worker (#1513) (de75ece)
  • Add debug information about each email verification (#1391) (3ea6e66)
  • Add proxy field in SmtpDebug (2f60a03)
  • Add RabbitMQ worker (#1395) (ecef8c9)
  • Add sentry logging to worker (5aa6026)
  • Allow /v1/check_email without worker mode (9ca9f39)
  • backend: Add one simple retry on Unknown (fcffc1a)
  • backend: Add POST /v1/bulk (#1413) (d9302d4)
  • backend: Add reply-to queue (aaea59f)
  • backend: Add worker webhook (db90cfa)
  • backend: Customize SMTP defaults (8f152b8)
  • backend: Prune bulk email verification database (#1377) (f905735)
  • backend: Reject a request with to_email field empty or missing (#1353) (1d9c29f)
  • backend: Support RCH_SMTP_TIMEOUT (#1407) (b9bda40)
  • core: Add domain-specific rules as JSON file (#1347) (cab143c)
  • core: Bump to 45s timeout for some domains (#1348) (fda33a2)
  • core: Default Gmail checks to use API (4304743)
  • Increase content length limit for bulk validation endpoint (#1525) (bbdab31)
  • Update parser.rs (#1345) (8269f22)
  • Use 2 queues instead of 1 (#1396) (af44f6c)
  • Yahoo account recovery via headless (#1364) (6f0f12b)

Reverts

  • backend: Bring back the sqlxmq-based bulk verification (#1477) (322ad4e), closes #1421

BREAKING CHANGES

  • The smtp_security field has been removed from the /check_email request.
    • In /v0/check_email endpoint, the hotmail_verif_method field has been replaced two fields: hotmailb2b_verif_method and hotmailb2c_verif_method
  • All serializations of "Smtp","Api","Headless" have been converted to lowercase "smtp","api","headless"
  • We switched to a more commonly-used builder pattern to create an input:
- let mut input = CheckEmailInput::new("[email protected]");
- input.set_from_email("[email protected]");

+ let input = CheckEmailInputBuilder::default()
+     .to_email("[email protected]")
+     .from_email("[email protected]")
+     .build()
+     .unwrap();

let res = check_email(input, &config).await;

After some testing, Reacher performs better with this setting:

  • each SMTP connection times out after 45s, but we don't retry over this previous setting
  • each SMTP connection times out after ~20s, but we do retry once (to avoid greylisting in some rare cases)

Changing the default behaviour in this PR.

  • For Hotmail, Gmail and Yahoo addresses, the *_use_api and *_use_headless parameters have been removed and replaced with a *VerifyMethod, an enum which can take value Api, Headless or Smtp. If using headless, pass a webdriver address to env variable RCH_WEBDRIVER_ADDR.
  • input.hotmail_use_headless is now a bool instead of a string. Pass the webdriver address as an environment variable RCH_WEBDRIVER_ADDR now.
  • core: SmtpError::TimeoutError has been removed in favor of the one async-smtp uses, namely std::io::Error with ErrorKind::TimeoutError

0.9.1 (2023-10-08)

  • refactor!: Change RUST_LOG target to reacher (#1152) (7e87be2), closes #1152

Bug Fixes

  • backend: Fix CI priting (748940c)
  • backend: Fix deploy to docker (20fcfa6)
  • backend: Fix dockerfile (f0ed49f)
  • backend: Improve sentry error messages (#1155) (d90d998)
  • backend: Redact email in sentry bug tracking (2c2d1d8)
  • cli: Update flags default values (a4fe57e)
  • core: Add more invalid parsing and improve logging (#1156) (b5ae9f8)
  • core: Default SMTP timeout to 15 (0d4fa4d)
  • core: Don't use headless on Microsoft 465 addresses (#1196) (0c3c21d)
  • core: Fix default CheckEmailInput (09215a1)
  • core: Fix hotmail headless option parsing (6ddc3b9)
  • core: Fix hotmail headless with authenticator (51cdb2e)
  • core: Fix MX random record selection (#1263) (9fae593)
  • core: Improve invalid parser (#1166) (bb46004)
  • core: Improve parser and headless hotmail runner (#1167) (0de33a5)
  • core: Improve parser from Sentry errors (fbaf588)
  • core: Improve parser's is_invalid (#1159) (ec1c4d5)
  • core: No sandbox in headless Hotmail check (0590438)
  • core: Remove antispam check (#1337) (06f18ed)
  • core: Yahoo add back IDENTIFIER_EXISTS (2b63556)
  • core: yahoo api changes: yid is userId now, sessionIndex is required and fo… (#1314) (0209111)
  • Don't auto-fetch Chrome, install in Docker (84fcc0d)
  • split Microsoft 365/Hotmail functionality (#1204) (e987b13)
  • Switch back to upstream fast-socks (#1164) (db356f1)
  • TLS accept unsafe (778692b)
  • Use chromedriver instead of gecko for parallel requests (e282e28)

Features

BREAKING CHANGES

  • The RUST_LOG target has been changed from check-if-email-exists to reacher.
- RUST_LOG=check-if-email-exists=debug cargo run
- RUST_LOG=reacher=debug cargo run
  • The library's main function check_email's argument CheckEmailInput nows takes a single to_email field, instead of a to_emails: Vec<String>
pub struct CheckEmailInput {
- pub to_emails: Vec<String>,
+ pub to_email: String,
  // --snip--
}

0.8.32 (2022-08-13)

Bug Fixes

  • Fix parsing some invalid emails (cb65c0f)
  • Syntax also check using using mailchecker (8385bec)

Features

0.8.31 (2022-08-10)

0.8.30 (2022-06-02)

Bug Fixes

  • Fix has_full_inbox check too lenient (93de444)

Features

  • Add smtp.error.description field for human-readable description of error (#1111) (43b47ea)

0.8.29 (2022-03-02)

Features

0.8.28 (2022-02-11)

Features

0.8.27 (2022-02-07)

Features

  • Allow user to define SMTP client security for TLS (#1043) (bc722ff)
  • Break SmtpError into {Helo,Connect,ConnectWithStream,MailFrom,RcptTo,Close}Error (#1055) (64e5193)

0.8.26 (2022-01-26)

Bug Fixes

Features

0.8.25 (2021-10-05)

Bug Fixes

Features

0.8.24 (2021-07-03)

Features

  • Add CheckEmailInput setter set_ prefix to differentiate with accessing fields (#933) (276f656)
  • Add deprecated warning when running HTTP server (#943) (e4b1570)

0.8.23 (2021-06-20)

Bug Fixes

  • Add serde (De)Serialize to pub structs (#931) (949475d)

0.8.22 (2021-03-31)

0.8.21 (2021-03-31)

0.8.20 (2021-03-30)

0.8.19 (2021-01-10)

Bug Fixes

  • Reconnect auto-closed SMTP connections by foreign server (#825) (01ccf0d)

Features

  • Consider CLI config parameters in HTTP request checks (#827) (88b751a)

0.8.18 (2021-01-07)

Bug Fixes

  • Check deliverability using successful response code instead of message parsing (#822) (39d0ecd)

0.8.17 (2021-01-05)

Bug Fixes

  • Add better checks for existing mailboxes (#819) (9f88d01)

0.8.16 (2020-12-07)

Features

  • Add proxy_host and proxy_port info to HTTP (#770) (123f431)

0.8.15 (2020-11-11)

Bug Fixes

  • Don't check inputted email if catch-all (#714) (5129dd1)
  • Fix 'reached the type-length limit while instantiating' (#665) (fa040fd)

0.8.14 (2020-09-24)

Bug Fixes

  • Add more known errors for invalid email (#543) (ad209c7)

Features

  • Add optional timeout on smtp verification (#611) (c70de7d)

0.8.13 (2020-08-04)

Bug Fixes

0.8.12 (2020-08-04)

Bug Fixes

0.8.11 (2020-07-11)

Bug Fixes

  • Add "Invalid email address" check (#471) (3b03617)
  • Add possibility to use proxy in Yahoo API request (#472) (aafcedf)

0.8.10 (2020-07-04)

Bug Fixes

  • Correct message parsing for "receiving at a rate" error (#462) (4b31706)

0.8.9 (2020-07-04)

Features

0.8.8 (2020-06-28)

Bug Fixes

  • Add debug logs for Yahoo (e534670)

0.8.7 (2020-06-28)

Bug Fixes

0.8.6 (2020-06-28)

Bug Fixes

  • Add additional error check for undeliverable (#374) (e52a8f0)
  • Use HTTP requests to verify Yahoo emails (#412) (5fad57d)

0.8.5 (2020-05-21)

Features

  • Expose misc, syntax, mx, smtp modules (#373) (7c1d741)

0.8.4 (2020-05-19)

Bug Fixes

0.8.3 (2020-05-12)

Bug Fixes

0.8.2 (2020-05-12)

Bug Fixes

Features

0.8.1 (2020-05-09)

Bug Fixes

  • Lowercase the error string before matching (#321) (d983b2f)

0.8.0 (2020-05-08)

  • refactor!: Rename main function to check_email (#319) (bd12b7d), closes #319

Bug Fixes

  • Rename valid_format to is_valid_syntax (#288) (eae6482)

BREAKING CHANGES

  • This new version includes an overhaul of the codebase, mainly to prepare the groundwork for the upcoming work on bulk validation. These changes include:
  • The main function email_exists has been renamed to check_email:
- email_exists(&input).await;
+ check_email(&input).await;
  • The input EmailInput has been renamed to CheckEmailInput. Its ::new() method, instead of taking a single String, now takes Vec<String>.

  • The output SingleEmail has been renamed to CheckEmailOutput. The main function check_emails now returns a Vec<CheckEmailOutput>.

pub async fn check_email(inputs: &CheckEmailInput) -> Vec<CheckEmailOutput>
  • The syntax field in CheckEmailOutput is no longer a Result<SyntaxDetails, SyntaxError>, but only SyntaxDetails. Error cases are guaranteed not to happen for syntax validation.

  • The misc, mx, and smtp fields' signatures stay the same: Result<{Misc,Mx,Smtp}Details, {Misc,Mx,Smtp}Error>. However, the Result is an Err only when an internal error arrives. In case of errors due to user input (e.g. incorrect email inputted), the Default trait has been implemented on {Misc,Mx,Smtp}Details and will be returned. As such, the Skipped variant of error enums has been removed.

{
  "input": "[email protected]",
  "mx": {
-    "error": { "cannot resolve" }
+    "accepts_mail": false, // This is Default
+    "records": [] // This is Default
  }
  • The misc, mx, smtp, syntax modules have been made private.
  • The field syntax.valid_format has been renamed to syntax.is_valid_syntax.

0.7.1 (2020-04-14)

Features

  • Add possibility to verify emails via proxy (#286) (a0ab93f)

0.7.0 (2020-03-26)

Features

BREAKING CHANGES

  • email_exists only takes one input now, an EmailInput which is built using the builder pattern.
- use check_if_email_exists::email_exists;
+ use check_if_email_exists::{email_exists, EmailInput};

- email_exists("[email protected]", "[email protected]");
+ email_exists(
+   EmailInput::new("[email protected]".to_string()).from_email("[email protected]".to_string())
+ )

EmailInput additionally takes a hello_name() method, which is used to set the name in the EHLO smtp command.

--from in CLI has been replaced with --from-email.

0.6.7 (2020-03-20)

0.6.6 (2020-03-01)

Bug Fixes

  • Allow http to listen to $PORT env variable (#215) (3b0c262)

0.6.1 (2020-02-18)

Features

0.6.0 (2019-12-01)

Features

  • Add a HTTP server behind the --http flag (#85) (d8b733e)
  • Add Dockerfile & x86_64-unknown-linux-musl target (#86) (cba1241)

BREAKING CHANGES

    • The is_disposable subfield has been moved from the mx field to a separate misc field

0.5.0 (2019-11-16)

Code Refactoring

BREAKING CHANGES

    • The main function email_exists now returns a Future:
pub async fn email_exists(to_email: &str, from_email: &str) -> SingleEmail {}
  • The SmtpError::SmtpError has been renamed to SmtpError::LettreError to show the underlying error more correctly (i.e., coming from lettre crate).
  • The BlockedByISP error has been removed. Instead, you'll see e.g. "connection refused", or whatever is returned by the SMTP server:
{
	// ...,
	"smtp": {
		"error": {
			"type": "LettreError",
			"message": "connection refused"
		}
	}
}

0.4.0 (2019-09-30)

Features

BREAKING CHANGES

  • the smtp's object keys have changed. Instead of
{
  "deliverable": ...,
  "full_inbox": ...,
  "has_catch_all": ...
}

it now returns

{
  "has_full_inbox": ...,
  "is_deliverable": ...,
  "is_disabled": ...,
  "is_catch_all": ...
}

where is_disabled checks if the address has been disabled/blocked by the email provider

0.3.2 (2019-09-26)

Bug Fixes

  • core: SyntaxError also is type & message (#60) (996633b)

0.3.1 (2019-09-26)

Bug Fixes

  • Don't use virtual workspace, be able to build (#59) (6c93893)

0.3.0 (2019-09-26)

Features

  • New error JSON format (#56) (fec4315)
  • Output JSON information with CLI (#53) (1d026d5)
  • Return Result instead of Result, with much more details (#23) (39b13f5)

0.2.3 (2019-05-09)

Bug Fixes

  • Update version to correct version in cli (992777c)

0.2.2 (2019-05-09)

Bug Fixes

  • Fix travis and appveyor to build binaries (f743e67)

0.2.1 (2019-05-09)

Bug Fixes

  • Refactor app to make travis build binaries (#17) (9616ef5)

0.2.0 (2019-05-09)

Features

0.1.1 (2018-12-29)