The first step would be to do a check on the domain to identify the mail exchangers using the command...
nslookup -q=mx domain.com
You should receive a response similar to...
domain.com mail exchanger = 0 mx1.domain.com
domain.com mail exchanger = 0 mx2.domain.com
NB: The number of records returned will be the number of MX records in the domains zone file.
Now that you know the address for the mail exchangers the next step would be to connect to the mail exchanger...
telnet mx1.domain.com 25
You should receive a response similar to
Connected to mx1.domain.com 25
Escape character is '^]'.
220 mx1.domain.com ESMTP
mail from <email@example.com>
250 2.1.0 Ok
rcpt to: <firstname.lastname@example.org>
Now the following response will tell you if the email address exists on the server or not...
550 5.1.1 <email@example.com>: Recipient address rejected: Unknown user in virtual alias table
221 2.0.0 Bye
Basically what this command and response sequence has done is emulate the same command and response sequence that your SMTP server would carry out in order to send an email to someone but only the first stages. By doing this check you will get a response to see if the email address exists or not. If it does then it is a valid email address (but doesn't mean it belongs to the user you expect is to) but if you get a 550 error response when doing the
rcpt to check then that means that the email address doesn't currently exist on the mail server. You only need to check one of the mail exchangers with this command sequence as all of the mail exchangers should return the same data and should be working off a common address alias table for the same domain name.
This can be scripted but is a bit beyond the scope of the ProWebmasters SE, and can be done in whatever language you need to use. basically by wrapping it all in a function that returns a boolean value you can run the check and if any of the checks (no domain, no MX record, SMTP 550 error) then you can return false and the check is deemed to have failed and the email address is invalid and won't receive emails at that time.