Установим Postfix на Ubuntu 20.04 LTS. Настроим самую минимальную конфигурацию, лишь бы отправлялись письма.
Операционная система
Используем операционную систему Ubuntu Server 20.04 LTS. Если кому-то нужна инструкция по установке, то вот ссылка:
Установка Ubuntu Server 20.04 LTS на виртуальную машину VMware ESXi 6.7
Итак, ОС установлена.
lsb_release -a
Я создам для тестирования отдельный домен третьего уровня testsender.internet-lab.ru, настрою DNS и буду слать письма с адреса info@testsender.internet-lab.ru без аутентификации.
Настройка DNS
Добавим домен testsender.internet-lab.ru и настроим почту. Добавляем A запись домена. Я использую тот же IP, что у основного домена.
Postfix будет представляться как postfix.testsender.internet-lab.ru, добавим A запись.
Настроим SPF и DMARC, чтобы письма можно было отправлять со своего IP адреса.
Установка Postfix
Установим Postfix самым простым способом из репозитория без настроек.
apt-get update
apt-get install postfix
Общий тип почтовой настройки выбираем "Без настройки":
OK.
dpkg -l | grep postfix
Установлен postfix версии 3.4.10.
Настройка Postfix
Создаём главный файл настроек /etc/postfix/main.cf:
myorigin = postfix.testsender.internet-lab.ru
myhostname = postfix.testsender.internet-lab.ru
mydomain = testsender.internet-lab.ru
smtpd_banner = postfix.testsender.internet-lab.ru
biff = no
alias_maps = hash:/etc/postfix/aliases
mynetworks = 127.0.0.0/8 192.168.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128
message_size_limit = 35840000
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
masquerade_classes = envelope_sender, header_sender
relay_domains = testsender.internet-lab.ru
maximal_queue_lifetime = 5d
compatibility_level = 2
Пока ничего особо не настроено, почтовик обслуживает один домен testsender.internet-lab.ru. Представляется как postfix.testsender.internet-lab.ru, 192.168.1.0/24 — моя локальная сеть, из которой я буду отправлять в postfix письма. После настройки SMTP аутентификации отправлять письма можно будет не только из этой сети.
Создаём файл /etc/postfix/aliases:
postmaster:root
Выполняем:
postalias /etc/postfix/aliases
Перезагружаем Postfix.
service postfix restart
Проверка отправки письма
Из подсети 192.168.1.0/24 пытаемся отправить письмо с помощью telnet по 25 порту.
telnet 192.168.1.13 25
ehlo localhost
Отправляем письмо без аутентификации.
Письмо ушло в postfix. Смотрим логи postfix:
status=sent, письмо отправлено. Уже хорошо, система заработало. Получатель, конечно, попытался далее переслать письмо мне на ящик в gmail, но не смог.
Не понравилось ему, что нет заголовка "From". Но это уже другая история. Кстати, можно обойти проблему, отправив письмо с помощью VBS, накидал скрипт:
Set emailObj = CreateObject("CDO.Message")
emailObj.From = "Тест postfix <info@testsender.internet-lab.ru>"
emailObj.To = "info@internet-lab.ru"
emailObj.Subject = "Test postfix"
emailObj.TextBody = "Test body postfix"
Set emailConfig = emailObj.Configuration
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.1.13"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = false
emailConfig.Fields.Update
emailObj.Send
If err.number = 0 then Msgbox "Done"
Отправляю скриптом:
Письма дошло, можно двигаться дальше.