Как узнать, что сервер SMTP находится в открытом реле?

Данный случай на уровне транспортного уровня а не на прикладном уровне. SSL только предотвратил бы воспроизведение, если игрок получает пакеты TCP и попытки воспроизвести затем. Но в браузере в HTTP выравниваются, пользователь может создать новый запрос легко путем простого обновления страницы...

1
задан 12 April 2012 в 21:26
5 ответов

Как сказал Джуви в своем ответе, просто установите сетевое соединение с tcp / 25 рассматриваемого сервера. Вы можете использовать для этого telnet или netcat.

Вот пример SMTP-транзакции:

http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_transport_example

Ретранслятор закрывается, если он выходит из строя после вы пытаетесь отправить RCPT, на прием которого сервер не настроен. Ретранслятор открыт, если он принимает любой домен, указанный вами в строке RCPT.

Я не знаю, что делает сканирование nmap, чтобы определить, есть ли у вас открытый ретранслятор. Следует иметь в виду, что ваш SMTP-сервер может быть настроен на прием всего трафика с тестируемого IP-адреса, так что да, он открыт, но не для остального мира, так что это может быть нормально. Для уверенности следует запустить тест с удаленного компьютера.

2
ответ дан 3 December 2019 в 16:50

Это код, который у меня был в моей папке сценариев. Не могу вспомнить, где я это взял. Кредиты оригинальному автору:

#!/usr/bin/perl -w
#Script to check for Open Relay EMAIL Servers on port 25
#Author: Felipe Ferreira  fel.h2o(at)gmail Date: 18/02/2009
#ref. http://www.perlmonks.org/index.pl?node_id=718552
#TODO: 
#1. Should get from a list of IPs, should report any Open servers to a .txt file
#smtp->code() and message() are the responses of the server!

use Net::SMTP;
my $host;
my $filename = "servers.txt";

#open .txt file with all servers names or IPs
#open($filehandle, "<" . $filename);
open FILE, "<servers.txt" or die $!;
while (my $host = <FILE>) {
    print "Testing: $host";
    my $smtp = Net::SMTP->new($host, 
        Hello => "admin", 
        Timeout => 3,
        Debug => 0);
    if (!$smtp) {       print STDOUT "No connection to $host \n";

    }
    else {
    $smtp->mail('relayfromtest@testing.com');
    $smtp->to('relaytotest@local.com')
       or 
       print "SERVIDOR OK: $host RCPT TO: ", $smtp->code(), " ", $smtp->message();
    if ($smtp->code() eq "250" ) {
       print "SERVIDOR CRITICAL: $host Tiene problema de OPEN RELAY!!!";
    }
#   $smtp->quit;    
    }
} #Next host
close FILE;
1
ответ дан 3 December 2019 в 16:50

Вы можете просто войти в систему вручную, используя telnet на порту 25.

Затем вы говорите HELO и попробуйте MAIL FROM: далее RCPT TO: В этот момент он должен сказать вам, что отклонил адрес, потому что отказал в доступе, если это не открытый ретранслятор. Если он открыт, он сделает то, что вы ему только что сказали - отправьте электронное письмо.

1
ответ дан 3 December 2019 в 16:50

Хотя ответы здесь указывают в правильном направлении, я хотел бы добавить отказ от ответственности:

Сервер электронной почты, который будет ретранслировать, не обязательно является открытым ретранслятором. Если у меня есть приложение, работающее на сервере, которому необходимо отправлять электронную почту, и я настраиваю свой почтовый сервер, чтобы позволить этому серверу приложений ретранслировать через него, помещая IP-адрес сервера в список «разрешенных для ретрансляции» на моем почтовом сервере, или если я настраиваю свое приложение для аутентификации на моем почтовом сервере, и я настраиваю свой почтовый сервер на разрешающую ретрансляцию с аутентификацией, это не открытый ретранслятор. Это просто ретранслятор (аутентифицированный или разрешенный на основе IP-адреса и т. Д.).

Открытый ретранслятор - это почтовый сервер, который позволяет любому пользователю, системе и т. Д. Ретранслировать через него.

0
ответ дан 3 December 2019 в 16:50

Процедура Microsoft для обнаружения открытых реле - ручные команды telnet, слишком много, чтобы публиковать здесь. http://support.microsoft.com/kb/324958

Автоматический тест http://www.mailradar.com/openrelay/ Однако, когда я использовал это с Microsoft IIS6, тесты с адресом электронной почты, окруженным речевыми метками (например, метод 7 RCPT TO: <" relaytest@mailradar.com">) кажутся неудачными, но на самом деле их не рассылают. Если вы попали в такую ​​ситуацию, вы можете захотеть провести дальнейшее исследование настроек и на самом деле убедиться, что они не попадают туда, куда вы не хотите. 178.209 .36.55, однако, проходит все эти тесты.

Если вы убедитесь, что вы не используете открытое реле, следующим шагом будет убедиться, что вы не используете обратное рассеяние. Обратное рассеяние - это когда третья сторона отправляет электронное письмо на недоставленный адрес с поддельный заголовок отправителя, поэтому отчет о недоставке отправляется очевидному отправителю (поддельный).

Это часто происходит в результате того, что сервер настроен на ретрансляцию почты для всего домена без списка действительных пользователей, поэтому он будет принимать электронную почту изначально, затем не сможет передать его на сервер со списком допустимых пользователей.

Простой тест - I 'я собираюсь позвонить на ваш внешний личный адрес электронной почтыme@hotmail.com, а ваш домен - domain.com

ehlo hotmail.com
почта от me@hotmail.com
rcpt на: invaliduser@domain.com
данные
subject: subject
текст
.

Затем проверьте учетную запись me@hotmail.com (возможно, в папке нежелательной почты) на предмет отчета о недоставке от чего-то вроде postmaster@domain.com.

2
ответ дан 3 December 2019 в 16:50

Теги

Похожие вопросы