Giter Site home page Giter Site logo

reacherhq / check-if-email-exists Goto Github PK

View Code? Open in Web Editor NEW
4.1K 4.1K 309.0 2.64 MB

Check if an email address exists without sending any email, written in Rust. Comes with a ⚙️ HTTP backend.

Home Page: https://reacher.email

License: Other

Rust 97.85% Shell 0.86% PowerShell 0.24% Dockerfile 1.06%
email email-validation email-validation-api email-verification email-verification-api email-verifier hacktoberfest

check-if-email-exists's People

Contributors

afront avatar agreon avatar amaury1093 avatar bharrisau avatar cortopy avatar dependabot-preview[bot] avatar dependabot[bot] avatar dnbln avatar dyw972 avatar hadisfr avatar hckhanh avatar itsmariush avatar liamhtml avatar mre avatar namper avatar par4m avatar psypherpunk avatar rokoroku avatar saguywalker avatar sneedcat avatar sylvain-reynaud avatar tyranron avatar yasoob avatar z3d3m0n avatar zagoli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

check-if-email-exists's Issues

Remove the HTTP server from the CLI?

This repo builds a CLI command, which, when passed the --http flag, also serves a HTTP backend.

I'm proposing to remove the --http flag and the HTTP backend.

The reason is that I built a fully-fledged HTTP backend at https://github.com/reacherhq/backend. It's extensible, maintained, documented with an OpenAPI spec, and used in production. The one here is just a sample HTTP backend.

https://github.com/reacherhq/backend also has a Dockerfile and a one-click deploy button to Heroku.

Are there any people strongly disapproving the removal of the HTTP backend from this repo?

Is the binary less accurate than running on server (via docker)?

Repo readme comment:

Note: The binary doesn't connect to any backend, it checks the email directly from your computer.

Is the docker version running on server with open SMTP port more accurate?

Are there best practices on how to make the responses more accurate? Some ideas I had (not sure if these are worth doing)

  • set the "FROM" email / domain with MX record pointing to the IP where the docker is running
  • checking against spamhaus / RBL to see if IP or from email you're using is blacklisted
  • round-robbin SMTP servers if doing bulk check (like variations [email protected], [email protected] ,[email protected], etc)

Locaweb closing smtp connection

Hey
what an awsome project, thanks for sharing.
just noticed that any email hosted at Locaweb can't be verifed because the server closes the connection
which make the verification status to unknown
here is one example of an email hosted at locaweb for test
[email protected]

Thanks

Build for WASM

What does it take to make this lib compile to WASM?

Rationale: since browsers allow TCP connections, this should work in browser. I'd also like to try deploying this to cloudfare workers.

Right now, some deps don't compile to WASM, running wasm-pack build in core/ gives:

➜  core git:(master) wasm-pack build
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling cfg-if v0.1.10
   Compiling log v0.4.8
   Compiling wasm-bindgen-shared v0.2.62
   Compiling bumpalo v3.3.0
   Compiling futures-core v0.3.5
   Compiling futures-sink v0.3.5
   Compiling wasm-bindgen v0.2.62
   Compiling slab v0.4.2
   Compiling once_cell v1.4.0
   Compiling lazy_static v1.4.0
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.5
   Compiling pkg-config v0.3.17
   Compiling cc v1.0.54
   Compiling smallvec v1.4.0
   Compiling pin-project-lite v0.1.5
   Compiling matches v0.1.8
   Compiling percent-encoding v2.1.0
   Compiling send_wrapper v0.4.0
   Compiling foreign-types-shared v0.1.1
   Compiling ppv-lite86 v0.2.8
   Compiling openssl v0.10.29
   Compiling gimli v0.21.0
   Compiling async-task v3.0.0
   Compiling iovec v0.1.4
   Compiling nodrop v0.1.14
   Compiling rustc-demangle v0.1.16
   Compiling match_cfg v0.1.0
   Compiling object v0.19.0
   Compiling bytes v0.5.4
   Compiling openssl-probe v0.1.2
   Compiling static_assertions v0.3.4
   Compiling ascii_utils v0.9.3
   Compiling quick-error v1.2.3
   Compiling linked-hash-map v0.5.3
   Compiling itoa v0.4.5
   Compiling base64 v0.11.0
   Compiling bufstream v0.1.4
   Compiling hostname v0.1.5
   Compiling net2 v0.2.34
error[E0432]: unresolved import `sys`
  --> /Users/amaurymartiny/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.34/src/tcp.rs:18:5
   |
18 | use sys::c;
   |     ^^^ maybe a missing crate `sys`?
-- snip --

504 Gateway Timeout

Checking posteo.de emails gives a Cloudfare 504 error:

<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]--> <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en-US"> <![endif]--> <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en-US"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]--> <head> <meta http-equiv="refresh" content="0"> <title>3wn2qx3bx5.execute-api.us-east-1.amazonaws.com | 504: Gateway time-out</title> <meta charset="UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" /> <meta name="robots" content="noindex, nofollow" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/cf.errors.css" type="text/css" media="screen,projection" /> <!--[if lt IE 9]><link rel="stylesheet" id='cf_styles-ie-css' href="/cdn-cgi/styles/cf.errors.ie.css" type="text/css" media="screen,projection" /><![endif]--> <style type="text/css">body{margin:0;padding:0}</style> </head> <body> <div id="cf-wrapper"> <div id="cf-error-details" class="cf-error-details-wrapper"> <div class="cf-wrapper cf-error-overview"> <h1> <span class="cf-error-type">Error</span> <span class="cf-error-code">504</span> <small class="heading-ray-id">Ray ID: 5b22083b7785d463 &bull; 2020-07-13 09:39:07 UTC</small> </h1> <h2 class="cf-subheadline">Gateway time-out</h2> </div><!-- /.error-overview --> <div class="cf-section cf-highlight cf-status-display"> <div class="cf-wrapper"> <div class="cf-columns cols-3"> <div id="cf-browser-status" class="cf-column cf-status-item cf-browser-status "> <div class="cf-icon-error-container"> <i class="cf-icon cf-icon-browser"></i> <i class="cf-icon-status cf-icon-ok"></i> </div> <span class="cf-status-desc">You</span> <h3 class="cf-status-name">Browser</h3> <span class="cf-status-label">Working</span> </div> <div id="cf-cloudflare-status" class="cf-column cf-status-item cf-cloudflare-status "> <div class="cf-icon-error-container"> <i class="cf-icon cf-icon-cloud"></i> <i class="cf-icon-status cf-icon-ok"></i> </div> <span class="cf-status-desc">Hamburg</span> <h3 class="cf-status-name">Cloudflare</h3> <span class="cf-status-label">Working</span> </div> <div id="cf-host-status" class="cf-column cf-status-item cf-host-status cf-error-source"> <div class="cf-icon-error-container"> <i class="cf-icon cf-icon-server"></i> <i class="cf-icon-status cf-icon-error"></i> </div> <span class="cf-status-desc">3wn2qx3bx5.execute-api.us-east-1.amazonaws.com</span> <h3 class="cf-status-name">Host</h3> <span class="cf-status-label">Error</span> </div> </div> </div> </div><!-- /.status-display --> <div class="cf-section cf-wrapper"> <div class="cf-columns two"> <div class="cf-column"> <h2>What happened?</h2> <p>The web server reported a gateway time-out error.</p> </div> <div class="cf-column"> <h2>What can I do?</h2> <p>Please try again in a few minutes.</p> </div> </div> </div><!-- /.section --> <div class="cf-error-footer cf-wrapper"> <p> <span class="cf-footer-item">Cloudflare Ray ID: <strong>5b22083b7785d463</strong></span> <span class="cf-footer-separator">&bull;</span> <span class="cf-footer-item"><span>Your IP</span>: redacted</span> <span class="cf-footer-separator">&bull;</span> <span class="cf-footer-item"><span>Performance &amp; security by</span> <a href="https://www.cloudflare.com/5xx-error-landing?utm_source=error_footer" id="brand_link" target="_blank">Cloudflare</a></span> </p> </div><!-- /.error-footer --> </div><!-- /#cf-error-details --> </div><!-- /#cf-wrapper --> </body> </html>

ref: https://www.reddit.com/r/rust/comments/hqbuqu/check_if_an_email_address_exists_without_sending/

Request endpoint for health check kubernetes

Hi did you have endpoint GET give response 200

for example i need run in kubernetes and we need health check end point give response 200
for example /status or something ?

      readinessProbe:
         httpGet:
            path: /status
            port: 3000
        livenessProbe:
           httpGet:
             path: /status
             port: 3000
           initialDelaySeconds: 18
           periodSeconds: 10

Wrong mail server

You have to find mail server first. You code doesn't work on most real domains. Try
telnet gmail.com 587 It will hang forever. At least you have to nslookup mx server.

Compile error "reached the type-length limit while instantiating"

Issue found on deploy with Heroku :

Compiling check-if-email-exists-cli v0.8.13 (/tmp/build_092091e8_)
error: reached the type-length limit while instantiating <std::iter::Map<std::iter::Map<s..., ()}]>, ()}]>}]>}]>>::Future}]>
|
= note: consider adding a #![type_length_limit="2016981"] attribute to your crate
error: aborting due to previous error
error: could not compile check-if-email-exists-cli.

Add HTTP server to cli

Currently online version returns more information than binary version. It would be nice to have those additional information in binary version.

Actually would you make it http server? So users could deploy it and use as backend service. It would be super nice.

External variable for host

Hello there,

I want to run this on kubernetes but since there is no way to set the host I am not being able to do so.

% sudo docker run -p 3000:3000 amaurymartiny/check-if-email-exists:0.6.0
Unable to find image 'amaurymartiny/check-if-email-exists:0.6.0' locally
0.6.0: Pulling from amaurymartiny/check-if-email-exists
Digest: sha256:d64e75544de51f2c418674c6624bf7f26b286ce2e510462f66644b6cfe6befa0
Status: Downloaded newer image for amaurymartiny/check-if-email-exists:0.6.0
Listening on http://127.0.0.1:3000
% curl -XGET localhost:3000   
curl: (56) Recv failure: Connection reset by peer

But if I sh into the container and:

 # wget localhost:3000
--2020-02-12 22:01:54--  http://localhost:3000/
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 92
Saving to: 'index.html'

index.html                            100%[========================================================================>]      92  --.-KB/s    in 0s      

2020-02-12 22:01:54 (13.1 MB/s) - 'index.html' saved [92/92]

/ciee # cat index.html 
Send a POST request with JSON `{ "from_email": "<email>", to_email: "<email>" }` in the body

I think the issue is this:

# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      1/check_if_email_ex

It should be 0.0.0.0 on the local address.

Which conditions return "connection refused"?

Just tried the binary on my home computer, it returned BlockedByIsp response. So I thought okay my ISP is blocked it. Then I run it on my digitalocean vps same email address returned true which is correct & nice. But some email addresses still returning BlockedByIsp response. Which conditions trigger these response?

For example: [email protected] returns BlockedByIsp while [email protected] returns false. It would be nice to mention these conditions in FAQ and also mention which ports are used. (outbound, inbound if any)

Create a SAAS out of this tool? 🤔

I've been tinkering about this idea:

There are tons of tools out there with the same goal (xverify, EmailListVerify, The Checker, ZeroBounce, etc...), but afaik they all somehow store the results in a DB.

I'm thinking of creating an email verification SAAS alternative, with a tiny backend database1, a focus on privacy, and open-source. It would be a paid service for larger volume, but there will always be a free tier - similar to what the forementioned services provide.

Put a thumbs up/down if you think this is a good idea or not.

Status update: it's done 🎉 https://reacher.email

1: The backend will store the user accounts, manage payments, keep track of their remaining "credits" to verify more emails... But it will never store the actual emails or their deliverability results.

Disposable emails not being labelled as disposable AND cannot set http_host

(Temporary email from 10minutemail.com)

when i run from desktop via binary (latest)

osboxes@osboxes:~/check_email$ ./check_if_email_exists [email protected]
[
  {
    "input": "[email protected]",
    "is_reachable": "unknown",
    "misc": {
      "is_disposable": false,
      "is_role_account": false
    },
    "mx": {
      "accepts_mail": true,
      "records": [
        "127.0.0.1."
      ]
    },
    "smtp": {
      "error": {
        "type": "SmtpError",
        "message": "io: could not resolve address `(\"127.0.0.1.\", 25)`"
      }
    },
    "syntax": {
      "address": "[email protected]",
      "domain": "twzhhq.online",
      "is_valid_syntax": true,
      "username": "rcddrychzofinvvqwi"
    }
  }
]

when i run binary file (i.e. command line) from a VPS with open port 25:

(env) django@gsf-rq-v11:~$ ./check_if_email_exists  "[email protected]"
[
  {
    "input": "[email protected]",
    "is_reachable": "unknown",
    "misc": {
      "is_disposable": false,
      "is_role_account": false
    },
    "mx": {
      "accepts_mail": true,
      "records": [
        "127.0.0.1."
      ]
    },
    "smtp": {
      "error": {
        "type": "SmtpError",
        "message": "io: could not resolve address `(\"127.0.0.1.\", 25)`"
      }
    },
    "syntax": {
      "address": "[email protected]",
      "domain": "twzhhq.online",
      "is_valid_syntax": true,
      "username": "rcddrychzofinvvqwi"
    }
  }
]

when i run as HTTP server and curl'ing it:

(env) django@da_server:~$ ./check_if_email_exists --http --http-host <MY_SERVER_IP>
Listening on http://<MY_SERVER_IP>:3000

then

osboxes@osboxes:~/check_email$ curl -X POST -d'{"to_emails":["[email protected]"]}' http://<MY_SERVER_IP>:3000

results:

[
  {
    "input": "[email protected]",
    "is_reachable": "unknown",
    "misc": {
      "is_disposable": false,
      "is_role_account": false
    },
    "mx": {
      "accepts_mail": true,
      "records": [
        "127.0.0.1."
      ]
    },
    "smtp": {
      "error": {
        "type": "SmtpError",
        "message": "io: could not resolve address `(\"127.0.0.1.\", 25)`"
      }
    },
    "syntax": {
      "address": "[email protected]",
      "domain": "twzhhq.online",
      "is_valid_syntax": true,
      "username": "rcddrychzofinvvqwi"
    }
  }
]

"http_host" (when run as http server) doesn't seem to reflect in the JSON output.

Consider using VRFY SMTP command

Checking the RFC 5321 while implementing #822, I've noticed that there is a special debug VRFY SMTP command for checking whether mailbox is valid.

It seems reasonable to use VRFY for checking mailbox existence, and fallback to RCPT TO only when the former is unimplemented or we unsure to make a decision out of its result.

Such check, in theory, should not be considered as a delivery attempt by SMTP servers, so we will do less unnecessary ratelimit and mailtrap hits.

:latest docker image doesn't work

When running the latest image it doesn't work:

docker run -p 3000:3000 amaurymartiny/check-if-email-exists
➜  ~ curl -X POST -d'{"from_email":"[email protected]","to_email":"[email protected]"}' http://localhost:3000
curl: (52) Empty reply from server

Looks like it's because the server listens on 127.0.0.1. The image with tag v0.6.6 works perfectly.

Catch All parse failed

Hey, I'm getting an error that I think could be avoided.

For outlook server sometimes I get this return:
image

If I'm not wrong, this is a catch all return, am I right?

Thanks.

Readme URLS

Most of the urls pointing at reacher.email return 404 like docs and commerical license

gmx.com emails are all unknown

From https://reacher.email/:

{
  "input": "[email protected]",
  "is_reachable": "unknown",
  "misc": {
    "is_disposable": false,
    "is_role_account": false
  },
  "mx": {
    "accepts_mail": true,
    "records": [
      "mx01.gmx.net.",
      "mx00.gmx.net."
    ]
  },
  "smtp": {
    "error": {
      "type": "SmtpError",
      "message": "io: incomplete"
    }
  },
  "syntax": {
    "address": "[email protected]",
    "domain": "gmx.com",
    "is_valid_syntax": true,
    "username": "any"
  }
}

Any other @gmx.com address acts similarly.

Create cross-platform binary/script

Right now this is only a script, which only works on *nix systems. It'd be wise to rewrite this in another language, which can be run on different platforms.

Issue deploy in kubernetes

hi we have issue deploy docker in google kubernetes

Images = amaurymartiny/check-if-email-exists:latest

try in kuberntes with domain and https ("is_reachable":"unknown")
smtp":{"error":{"type":"SmtpError","message":"io: incomplete"}}

curl -X POST -d'{"to_emails":["[email protected]"]}' https://api-email-validation.xxx.com
[{"input":"[email protected]","is_reachable":"unknown","misc":{"is_disposable":false,"is_role_account":false},"mx":{"accepts_mail":true,"records":["alt2.gmail-smtp-in.l.google.com.","alt1.gmail-smtp-in.l.google.com.","gmail-smtp-in.l.google.com.","alt3.gmail-smtp-in.l.google.com.","alt4.gmail-smtp-in.l.google.com."]},"smtp":{"error":{"type":"SmtpError","message":"io: incomplete"}},"syntax":{"address":"[email protected]","domain":"gmail.com","is_valid_syntax":true,"username":"ab1212"}}]

try in local ("is_reachable":"safe")

curl -X POST -d'{"to_emails":["[email protected]"]}' http://localhost:3000
[{"input":"[email protected]","is_reachable":"safe","misc":{"is_disposable":false,"is_role_account":false},"mx":{"accepts_mail":true,"records":["gmail-smtp-in.l.google.com.","alt3.gmail-smtp-in.l.google.com.","alt1.gmail-smtp-in.l.google.com.","alt4.gmail-smtp-in.l.google.com.","alt2.gmail-smtp-in.l.google.com."]},"smtp":{"can_connect_smtp":true,"has_full_inbox":false,"is_catch_all":false,"is_deliverable":true,"is_disabled":false},"syntax":{"address":"[email protected]","domain":"gmail.com","is_valid_syntax":true,"username":"ab1212"}}]

Invalid sender email

Some mail providers check validity of sender address, and the current script fails for <[email protected]> in
https://github.com/amaurymartiny/check-if-email-exists/blob/50a4628f849c8126d0ceea1a89fe2a2580abd7fb/expectTelnet.exp#L13

Output of telnet

example 1
$ telnet *.*.*.* 587
Trying *.*.*.*...
Connected to *.*.*.*.
Escape character is '^]'.
220 *.*.*.* ESMTP
> HELO Hi  
250 *.*.*.*
> MAIL FROM: <[email protected]>
250 2.1.0 Ok
> RCPT TO: <*@*.*.*>
450 4.1.8 <[email protected]>: Sender address rejected: Domain not found
> QUIT
221 2.0.0 Bye
Connection closed by foreign host.
example 2
$ telnet *.*.* 587
Trying *.*.*.*...
Connected to *.*.*.
Escape character is '^]'.
220-*.*.* ESMTP Exim 4.91 #1 Tue, 04 Sep 2018 18:57:07 +* 
220-We do not authorize the use of this system to transport unsolicited, 
220 and/or bulk e-mail.
> HELO Hi
250 *.*.* Hello Hi [*.*.*.*]
> MAIL FROM: <[email protected]>
250 OK
> RCPT TO: <*@*.*>
550-Verification failed for <[email protected]>
550-The mail server could not deliver mail to [email protected].  The account or domain may not exist, they may be blacklisted, or missing the proper dns entries.
550 Sender verify failed
> QUIT
221 *.*.* closing connection
Connection closed by foreign host.

Script output

example 2
$ ./checkEmail.sh *@*.*
send: spawn id exp6 not open
    while executing
"send "RCPT TO: <$email>\r""
    (file "expectTelnet.exp" line 15)
false

How to check if yahoo emails are disabled or not

We use the Yahoo's API to check if Yahoo emails exist or not.

This checks if the email's username has already been used or not. But unfortunately, it doesn't check if the account is disabled. This leads to some hard bounces on disabled yahoo addresses.

We would need a clever way to solve this.

If you want to work on this, and need some disabled yahoo emails to test, I may have 1-2 to give you.

inconsistent results

The tool seems to give inconsistent results both on the website (entering the email in the input field), as well as running locally on rust.

For example, 2 hours ago, I checked an email on the reacher website, and it returned
"is_reachable": "unknown",

And now, it returns
"is_reachable": "safe",

It is definitely not a case of this mailbox receiving too many emails.

More critically, using rust, the status is returning as

"is_reachable": "invalid",

Which is totally wrong... Given that invalid is stated to be.... "We guarantee with a confidence of 99.99% that this email is not deliverable." I really don't think the app should be classifying emails as invalid when it is not actually certain.

Pass proxy details via POST request

First of all, thanks for developing this, it's been really helpful for us.

Is it possible to pass the proxy-host and proxy-port via POST request along with the to_emails parameter?

Thanks!

lettre smtp client's timeout is not honored

A timeout of 3s has been added:

https://github.com/amaurymartiny/check_if_email_exists/blob/d92341553ca183422ed128243d93a54cabd8fa9b/src/smtp.rs#L29

However, the binary hangs for clearly more than 3s:

DEBUG 2018-12-29T20:40:29Z: check_if_email_exists::smtp: Connecting to gmail-smtp-in.l.google.com.:587...
DEBUG 2018-12-29T20:40:29Z: check_if_email_exists::smtp: Connecting to alt4.gmail-smtp-in.l.google.com.:25...
DEBUG 2018-12-29T20:40:29Z: check_if_email_exists::smtp: Connecting to alt3.gmail-smtp-in.l.google.com.:465...
DEBUG 2018-12-29T20:40:29Z: check_if_email_exists::smtp: Connecting to alt1.gmail-smtp-in.l.google.com.:587...
DEBUG 2018-12-29T20:40:29Z: lettre::smtp::client: connecting to 108.177.127.27:587
DEBUG 2018-12-29T20:40:29Z: lettre::smtp::client: connecting to 64.233.179.26:25
DEBUG 2018-12-29T20:40:30Z: lettre::smtp::client: connecting to 74.125.24.27:587
DEBUG 2018-12-29T20:40:30Z: lettre::smtp::client: connecting to 74.125.195.26:465

Bulk Validation & IP blacklist

Hello @amaurymartiny, we are running your solution using Kubernetes but I'm getting problems with blacklist IPs.

I check that so many solutions have the bulk validation feature and I was think how can it be done without this blacklist problem. Do you have any tips of it?

I thought that could be proxies, but I don't know if it works and make sense.

Thanks.

Serverless version of this service

To mimic the service proposed by the websites mentioned in the README, it would be good to have an endpoint that takes an email in a query parameter as input, and outputs true/false.

I have never tried serverless, but I think it would fit here, i.e. no need to code a web server in Rust, just a function that takes a HTTP request in input, and outputs a HTTP response.

Some requirements about this serverless platform:

  • supports Rust, obviously
  • is free (or at least has a free tier)
  • SMTP ports open

Some possible solutions:

Fail to check work related emails

Hello,

I tried to use the tool and check work related emails like {name}@thoughtworks.com, {name}@guidebook.com but it returns this error

450, "4.2.1",  The user you are trying to contact is receiving mail at a rate that prevents additional messages from being delivered. Please resend your message at a later time. If the user is able to receive mail at that time, your message will be delivered. 

I tried it on 2-3 more company emails but the result is the same. Does this mean that the tool doesn't work on company/work emails?

Thanks

Make it faster!

Right now, to check a Gmail address, it take 10-15 seconds to resolve. It would be really good to make it faster.

If anyone stumbles upon on this issue and has some ideas/heuristics, I'm interested.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.