• XSS.stack #1 – первый литературный журнал от юзеров форума

Как протестировать почтовый сервер?

Quake3

TPU unit
Забанен
Регистрация
03.11.2010
Сообщения
4 529
Решения
4
Реакции
5 305
Депозит
0.046
Пожалуйста, обратите внимание, что пользователь заблокирован
Есть почтовый сервер, ОС линукс, ПО не суть важно какое. Стоит задача протестировать его на массовый mail-spam атаку. Как это можно сделать?
Для тестирования http помню была тулза от Апача (ab) и еще много чего. А есть ли что-то подобное для мейлов? Если нет - как это закодить, в какую сторону смотреть (вызов sendmail программно)?
Заказать у кого-либо тесты не могу, только сами, ибо гос.сектор.
 
Если правильно понял это же (Spoofing checks domain for email)


 
Пожалуйста, обратите внимание, что пользователь заблокирован
сорян, я имел ввиду почтовый днс.
тут чекни https://mxtoolbox.com/spf.aspx а потом уже отталкиваться оттого что выше скинули
 
Задача в проверке - выдержит ли он нагрузки под спам-рассылкой мощной или вообще подвержен ли он спаму?
Если речь о стресс-тесте, то я сам себе генерил поток входящих писем. Просто создавал список для получателей и HTML-шаблон для нагрузки. Если открытый релей где-то настроен на 25 порту - кидал прям туда без атворизации. Либо уже на сам почтарь напрямую. При таком раскладе, разослав без задержки писем 1000 - можно посмотреть как с очередями обстоят дела у postfix, к примеру, как будто кто-то рассылку запустил.

Код:
package main

import (
    "crypto/tls"
    "fmt"
    "gopkg.in/gomail.v2"
    "io/ioutil"
    "log"
    "os"
    "strings"
)

func main() {
    if len(os.Args) <= 2 {
        fmt.Printf("USAGE : %s <target_emails> <html_template>\n", os.Args[0])
        os.Exit(0)
    }

    fileName := os.Args[1]

    fileBytes, err := ioutil.ReadFile(fileName)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    emails := strings.Split(string(fileBytes), "\n")

    d := gomail.NewDialer("smtp.domain.top", 25, "user", "pass")
    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
    file, err := ioutil.ReadFile(os.Args[2])
    htmlTemplate := string(file)
    if err != nil {
        log.Fatal(err)
    }
    m := gomail.NewMessage()
    for _, e := range emails {
        m.SetAddressHeader("From", "postmaster@domain.top", "Super sudoer")
        m.SetAddressHeader("To", e, "User")
        m.SetHeader("Subject", "SPAM")
        m.SetBody("text/html", htmlTemplate)
        err = d.DialAndSend(m)
        if err != nil {
            fmt.Println(err)
        }
        fmt.Println("email sent to " + e)
    }
}
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Что по днс записям?
Это не знаю.

Если правильно понял это же
Возможно, спасибо. Надо уточнить.

Задача в проверке - выдержит ли он нагрузки под спам-рассылкой мощной или вообще подвержен ли он спаму?
Для начала да - стоял вопрос о мощной спам рассылке. Т.е. если придет дофига писем.
Если речь о стресс-тесте, то я сам себе генерил поток входящих писем.
А где это запускать лучше, на каком-то левом сервере в инете или локально поднять еще 1 сервер?
 
Это не знаю.


Возможно, спасибо. Надо уточнить.


Для начала да - стоял вопрос о мощной спам рассылке. Т.е. если придет дофига писем.

А где это запускать лучше, на каком-то левом сервере в инете или локально поднять еще 1 сервер?
Ну в зависимости от инфраструктуры. Обычно "пограничными" стоят почтовые шлюзы и напрямую в почтарь не всегда можно. Я просто имитировал письмо извне - отправлял внутри на релейный порт почтового шлюза. Он думал что письмо снаружи пришло и перенаправлял в почтарь. Таким образом просто вся почтовая инфра задействована. От этого уже и идти - локально или на стороне. Можно вообще со своей тачки из локалки запустить и все. Разница лишь будет в отсутствии/присутствии NAT, соответственно нагрузке на сетевое оборудование пограничное.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх