Швейцарский нож для отправки электронных сообщений по SMTP
Swaks (Swiss Army Knife for SMTP)
Swaks - консольная утилита для тестирования и отладки SMTP-серверов. Позволяет отправлять тестовые письма, проверять работу почтовых сервисов и диагностировать проблемы.
Основные возможности
- Отправка тестовых писем через протоколы SMTP/ESMTP, LMTP
- Поддержка шифрования STARTTLS,SSL/TLS
- Аутентификация:LOGIN,PLAIN, CRAM-MD5
- Работа с различными типами соединений: IPv4/IPv6, UNIX-сокеты
- Поддержка SMTP-расширений: XCLIENT (имитация клиента),PROXY (проксирование),PRDR (построчная доставка)
- Гибкие настройки через:
- Аргументы командной строки
- Переменные среды
- Конфигурационные файлы
- Подробное логирование SMTP-сессий
Пример использования
swaks --server smtp.example.com \ --tls \ --port 465 \ --ehlo test-EHLO-HEADER.ru \ --auth PLAIN \ --auth-user sender@example.com \ --auth-password 'password123' \ --to user@example.com \ --from sender@example.com \ --h-From: '"Test User"<test@testdomain.ru>' \ --header "Subject: HTML Email Test" \ --header-X-Test "test email" \ --header "X-Mailer:Microsoft Outlook " \ --header "Message-ID: <34sdf63bs734543dfg@recipientdomain.ru>"\ --h-Subject: 'test swaks' --header "Content-Type: text/html" \ --body "<html><body><h1>Hello, World!</h1><p>This is a test HTML email.</p></body></html>" \ --attach /path/to/image.jpg \ --attach-name picture.jpg \ --attach-type image/jpeg \ --attach-encoding base64 \ --quit-after DATA \ --hide-password \ --hide-rcpt
🛠️ Краткое описание наиболее часто используемых параметров:
Параметр | Описание |
---|---|
–from | Адрес отправителя письма |
–to | Адрес получателя письма |
–server | Адрес SMTP сервера для отправки |
–port | Порт SMTP сервера (обычно 25, 465 или 587) |
–auth | Тип аутентификации (например, LOGIN, PLAIN) |
–auth-user | Имя пользователя для аутентификации |
–auth-password | Пароль для аутентификации |
–tls | Использовать TLS для защищённого соединения |
–header | Установить произвольный заголовок письма |
–body | Установить текст тела письма |
–attach | Прикрепить файл к письму |
–attach-type | MIME-тип вложенного файла |
–attach-name | Имя вложения, которое будет видно в письме |
–attach-encoding | Указать кодировку вложения (например, base64) |
–ehlo | Установить своё имя клиента для команды EHLO |
–timeout | Установить таймаут ожидания ответа от сервера |
–quit-after | Остановить выполнение после указанной SMTP-команды (EHLO, MAIL, RCPT, DATA) |
–hide-password | Скрыть пароль в выводе для безопасности |
–hide-rcpt | Скрыть адреса получателей в выводе |
📧 Пример для проверки сервера без отправки письма (только установление соединения и EHLO)
swaks --server smtp.example.com \ --ehlo mytestmachine.local \ --tls \ --port 25 \ --quit-after EHLO
Применение
- Проверка работоспособности SMTP-серверов
- Диагностика проблем с отправкой почты
- Тестирование антиспам-фильтров
- Автоматизация в скриптах мониторинга
- Отладка почтовых рассылок
Утилита особенно полезна для:
- Администраторов почтовых серверов (Postfix, Exim, Sendmail)
- Разработчиков email-решений
- Специалистов по информационной безопасности
swaks --from sender@testdomain.ru \ --h-From: '"Test User"<test@testdomain.ru>' \ --to recipient@mydomain.ru \ --server smtp.myserver.ru \ --ehlo test-EHLO-HEADER.ru \ --header-X-Test "test email" \ --h-Subject: 'test swaks'
Ещё вариант записи с комментариями
#!/bin/bash ARGS=( --from sender@testdomain.ru #P1 --h-From: '"Test User"<test@testdomain.ru>' #P2 --to recipient@mydomain.ru --server smtp.myserver.ru --ehlo test-EHLO-HEADER.ru --header-X-Test "test email" --header "X-Mailer:Microsoft Outlook" --header "Message-ID: <34sdf63bs734543dfg@mydomain.ru>" --h-Subject: 'test swaks' --header "Content-Type: text/html" --body '<html><head><meta charset="UTF-8"><title>Тема письма</title></head><body><h1>Уважаемый пользователь!</h1> <p> ИТ курсы доступны по ссылке <a href="https://itvideo.pro/">ИТ курсы</a>.</p> <p>С уважением,<br> Команда IT Video<br> © Copyright 2025.</p> </body></html>' ) swaks "${ARGS[@]}"