Почтовые протоколы
Общие сведения
За доступ по сети к почтовому ящику пользователя на почтовом сервере, создание письма и его передачи клиенту MTA используя протокол smtp ( авторизаци ), отвечает программа пользовательский агент MUA (Mail User Agent). Почтовый агент не принимают сообщения, они только просматривают, считывают, анализируют почтовый ящик
В ОС Linux для каждого пользователя предусмотрен локальный почтовый ящик
Почтовый ящик linux пользователя обычно находится в директории /var/spool/mail/username
Самый простой пользовательский агент для linux это программа mail
Агент передачи сообщений - Mail Transfer Agent (MTA) - предназначен для передачи сообщений другим почтовым клиентам MTA используя протокол smtp. Получателем почтового клиента может быть как пользователь в пределах одной системы, так и удаленного сервера.
MDA ( Mail Delivery Agent - агент доставки почты ) является компонентом программного обеспечения для компьютера, который отвечает за доставку сообщений электронной почтыв почтовый ящик локального получателя ( Из материала Википедия )
MTA отправителя определяет MTA получателя с помощью MX или A записи dns.
МTA получателя передает сообщение МDA(mail delivery agent) по протоколу smtp, который в свою очередь может быть установлен на одном сервере с MTA или быть отдельным сервером
MDA кладет письмо в хранилище пользователя, MUA получателя извлекает письмо из хранилища с помощью протокола IMAP или POP3 или используя web-интерфейс
Прежде чем письмо попадет к пользовательскому конечному MTA, оно может пройти через цепочку других MTA, каждый из которых будет определять путь к конечному MTA
Самым простым агентом передачи сообщений для linux яляется программа sendmail, smail, qmail
Postfix - агент передачи сообщений, который занимается пересылкой почтовых сообщений от пользовательского почтового агента MUA к удаленному почтовому серверу, принимает почтовые сообщения от удаленных почтовых серверов, пересылает их другим MTA или доставляет сообщения прямиком в почтовые ящики
За доставку сообщений конечному удаленному пользователю отвечают другие MTA, например такие MTA как серверы POP3 или IMAP, будут передавать сообщения таким почтовым клиентам как Outlook, Apple Mail
В целях безопасности, MTA также отвечают за анализ содержимого сообщений, межсетевые экраны на это не способны.
SMTP
SMTP - протокол передачи почты, для клиента MTA, для передачи использует адрес: ящик@домен
SMTP использует следующие порты:
25/tcp SMTP (стандартный порт)
465/tcp SMTPS (защищенное соединение)
587/tcp SMTP (starttls)
POP3
POP3 - пользовательский протокол для MUA, позволяет сетевому клиенту считывать почтовые сообщения из своего почтового ящика на почтовом сервере
POP3 использует следующие порты:
110/tcp POP3 (стандартный порт)
995/tcp POP3S (SSL/TLS соединения)
Протокол IMAP
IMAP - пользовательский протокол для MUA, позволяет сетевому клиенту считывать почтовые сообщения из своего почтового ящика на почтовом сервере
IMAP использует следующие порты:
143/tcp IMAP (стандартный порт)
993/tcp IMAPS (SSL/TLS соединения)
PTR запись
PTR запись нужна для отправки писем от имени домена. Принимающий сервер сверяет по ip адресу имя домена, которое было указано при отправке.
Проверяется совпадение домена из PTR записи и домена, который значится в параметре HELO (EHLO) почтового сервера-отправителя.
При необходимости в ptr записи нужно обратиться на свой хостинг и попросить прописать PTR запись для IP адреса.
PTR запись прописывается для ip-адреса, если кроме домена есть поддомены и у них одинаковые ip, в таком случае ptr будет указывать на домен и поддомены.
Проверка ptr записи по ip-адресу почтового сервера:
nslookup -type=ptr 77.88.21.158
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
158.21.88.77.in-addr.arpa name = mail-smtp.stable.qloud-b.yandex.net.
#Альтернативный вариант:
dig -x 77.88.21.158
MX запись
Проверка MX записи почтового сервера:
nslookup -type=mx yandex.ru
Требования к почтовому серверу
Перед настройкой почтового сервера необходимо убедиться в настройках самого Linux:
1. Используется правильное имя хоста
2. Хост доступен и может устанавливать соединения
3. Правильная настройка системного времени
4. Правильное разрешение доменных имен для клиента и сервера
5. Используется правильное доменное имя ( mail.example.com ), многие почтовые клиенты проверяют наличие доменного имени и его разрешение
Диагностика почтового сервера
Проверка доступности удаленного почтового сервера:
nmap -v -p25,110,143,465,587,993,995 mail.netbash.ru
Прослушиваемые порты и процессы которые их используют, просмотр на локальной машине
netstat -lnpvut
Просмотр текущих соединений для прослушиваемых портов:
netstat -anpvut
Проверка имени хоста на локальной машине:
hostname -f
Проверка наличия записи mx для доменного имени почтового сервера:
nslookup -type=mx megaplan.ru
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
megaplan.ru mail exchanger = 10 mx.yandex.ru.
Проверка smtp с помощью telnet
telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 mail.netbash.ru ESMTP Postfix
HELO localhost.localdomain
250 mail.netbash.ru
MAIL FROM:<>
250 2.1.0 Ok
RCPT TO:
250 2.1.5 Ok
DATA
354 End data with .
FROM: root@localhost.localdomain
TO: toly@mail.netbash.ru
SUBJECT: test mail from test subject
test body
.
250 2.0.0 Ok: queued as EABD86E37B9
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
Проверка IMAP с помощью telnet
Проверка POP3 с помощью telnet
Способы авторизации
В зависимости от настроек почтового сервера некоторые команды telnet могут быть недоступны из зи отсутствия шифрования SSL/TLS
Вывод существующих способов авторизации для SMTP протокола:
telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 mail.netbash.ru ESMTP Postfix
EHLO localhost.localdomain
250-mail.netbash.ru
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
quit
221 2.0.0 Bye
Connection closed by foreign host.
Вывод способов авторзации для протокола IMAP:
telnet 192.168.1.1 143
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS LOGINDISABLED] IMAP server ready
001 CAPABILITY
* CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS LOGINDISABLED
001 OK Pre-login capabilities listed, post-login capabilities have more.
LOGOUT
* BYE Too many invalid IMAP commands.
Connection closed by foreign host.
Для вывода способов авторизации POP3 используются команды CAPA и AUTH:
telnet 192.168.1.1 110
Trying 192.168.1.1...
AUTH
...
CAPA
...
QUIT
...
Пример авторизации для протокола SMTP
В следующем примере видно, как запрос получает ошибку авторизации, связано это с отсутствием защищенного соединения TLS и SSL
telnet smtp.yandex.ru 25
Trying 77.88.21.158...
Connected to smtp.yandex.ru.
Escape character is '^]'.
220 iva1-5283d83ef885.qloud-c.yandex.net (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru) 1670190201-LhdXA1jZgW21
EHLO client.server.net
250-iva1-5283d83ef885.qloud-c.yandex.net
250-8BITMIME
250-PIPELINING
250-SIZE 53477376
250-STARTTLS
250-AUTH LOGIN PLAIN XOAUTH2
250-DSN
250 ENHANCEDSTATUSCODES
AUTH LOGIN
530 5.7.7 Email sending without SSL/TLS encryption is not allowed. Please see: https://yandex.ru/support/mail/mail-clients/ssl.html 1670190232-LhdXA1jZgW21
Connection closed by foreign host.
Чтобы обеспечить защищенную передачу ваших данных, Яндекс Почта использует шифрование этих данных с помощью протоколов SSL и TLS. Если в настройках вашей почтовой программы не активировано шифрование передаваемых данных, то вы не сможете получать и отправлять письма с помощью этой программы.
Источник: yandex.ru
Авторизация IMAP
Проверка наличия шифрования SSL/TLS
Связанные темы
Конфигурация openvpn сервера в Linux Alpine
Конфигурация почтового сервера
Саздание сертификатов SSL (TLS) для сайта
Настройка openvpn сервера в Linux