Настройка SMTP-сервера с задержкой ответа
На этом этапе мы создадим простой SMTP-сервер с задержкой ответа с использованием Python. Это позволит нам смоделировать медленный или ненадежный SMTP-сервер, что полезно для тестирования способности Hydra обрабатывать такие сценарии.
Сначала создадим Python-скрипт с именем delayed_smtp.py
в директории ~/project
. Этот скрипт будет прослушивать подключения SMTP и вводить задержку перед отправкой ответа.
nano ~/project/delayed_smtp.py
Теперь вставьте следующий Python-код в файл delayed_smtp.py
:
import smtpd
import asyncore
import time
import sys
class DelayedSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print('Receiving message from:', peer)
print('From:', mailfrom)
print('To:', rcpttos)
print('Message length:', len(data))
print('Waiting for 5 seconds...')
sys.stdout.flush()
time.sleep(5) ## Simulate a delay
print('Done waiting!')
sys.stdout.flush()
return '250 Message accepted for delivery'
def run():
port = 1025
server = DelayedSMTPServer(('0.0.0.0', port), None)
print(f"Starting SMTP server on port {port}")
sys.stdout.flush()
asyncore.loop()
if __name__ == '__main__':
run()
Этот скрипт определяет настраиваемый SMTP-сервер, который вводит задержку в 5 секунд перед подтверждением получения электронного письма. Он прослушивает порт 1025.
Сохраните файл и выйдите из nano
.
Теперь запустим скрипт в фоновом режиме. Мы используем команду nohup
, чтобы убедиться, что скрипт продолжит работу даже после закрытия терминала. Также мы перенаправим вывод в файл с именем delayed_smtp.log
, чтобы можно было отслеживать его работу.
nohup python3 ~/project/delayed_smtp.py > ~/project/delayed_smtp.log 2>&1 &
Эта команда запускает скрипт delayed_smtp.py
в фоновом режиме. Вы можете проверить файл delayed_smtp.log
, чтобы увидеть вывод сервера.
Чтобы убедиться, что сервер запущен, вы можете использовать netstat
или ss
, чтобы проверить, прослушивается ли порт 1025.
netstat -tulnp | grep 1025
Вы должны увидеть вывод, похожий на следующий:
tcp 0 0 0.0.0.0:1025 0.0.0.0:* LISTEN <PID>/python3
Это подтверждает, что SMTP-сервер запущен и прослушивает порт 1025. Обратите внимание, что <PID>
будет заменено на фактический идентификатор процесса Python-скрипта.
Теперь, когда у нас запущен SMTP-сервер с задержкой, мы можем использовать его для тестирования производительности Hydra в неблагоприятных сетевых условиях.