Как проверить существование адреса e-mail?

Вопрос: как проверить существование адреса e-mail?

Ответ: Это можно сделать при помощи команды SMTP VRFY и программы telnet

Подключаемся telnet’ом на сервер, на котором хотим проверить наличие адреса/пользователя.

$ telnet host.com 25
Trying 44.55.66.77…
Connected to host.com.
Escape character is ‘^]’.
220 host.com ESMTP Postfix
HELO 127.0.0.1
250 host.com
VRFY existeduser
252 2.0.0 existeduser
VRFY unknownuser
550 5.1.1 <unknownuser>: Recipient address rejected: User unknown in local recipient table
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Как видите, если пользователь существует, мы получим код 252, если не существует — код 550. Соответственно, можно написать скрипт на bash, который сделает проверку за нас.

#!/bin/bash

HOST=$1
PORT=25
USER=$2

if [ "$1" == "" ]
then
    echo "Usage: $0 host user"
    exit
fi

exec 3<>/dev/tcp/$HOST/$PORT
read -u 3 STATUS
echo "HELO 127.0.0.1" >&3
read -u 3 STATUS
echo "VRFY $USER" >&3
read -u 3 STATUS
RESULT=$(echo $STATUS | cut -d" " -f 1)
if [ "$RESULT" == "252" ]
then
    echo "User $USER at host $HOST exists"
else
    echo "User $USER at host $HOST does not exist"
fi

Но, естественно, не все почтовые сервера позволят такие действия.