Oтправка почты из консоли: smtpd и Яндекс Почта
Опубликовано 15.10.2024 в OpenBSD
В свежеустановленной системе OpenBSD присутствует (и даже по умолчанию запускается) почтовый демон smtpd. Правда, в дефолтной своей конфигурации он настроен для работы исключительно с локальной почтой в пределах одной системы - по умолчанию, например, через механизм локальной почты рассылается немало полезных уведомлений: логи системных апдейтов, ежедневного скрининга системы на всякие небезопасные моменты и тому подобное. Да, собственно, первое, что вы увидите в свежеустановленной системе - это уведомление при логине в консоль "у вас новая почта" и письмо от Theo de Raadt :) В общем, запускайте присутствующий по дефолту клиент mail или ставьте что-нибудь с более человеколюбивым интерфейсом (например, mutt, для любителей GUI могу порекомендовать claws-mail) и читайте!
Но вот чтобы похвастаться после установки выводом dmesg или воспользоваться встроенной утилитой sendbug - нужно уметь отправлять почту вовне, например, настроив пересылку (relay) исходящей почты через какой-нибудь внешний почтовый сервис. В качестве такового я предпочитаю использовать Яндекс Почту. Итак, что нам потребуется:
-
Руководствуясь вот этой инструкцией от Яндекса разрешаем в настройках Яндекс Почты доступ к почтовому ящику с помощью почтовых программ и создаем пароль для приложения (алярм! пароль можно увидеть только один раз при его создании, не продолбайте, сохраняйте!).
-
Как учит нас
Партия и Правительствоman smtpd.conf
, перво-наперво нам нужно создать файл для хранения наших секретиков (в последней строчке в качестве username подставьте "вашупочту@yandex.ru", а password тот самый, что выше):
# touch /etc/mail/secrets
# chmod 640 /etc/mail/secrets
# chown root:_smtpd /etc/mail/secrets
# echo "твойлогин username:password" > /etc/mail/secrets
- А теперь подредактируем непосредственно конфиг /etc/mail/smtpd.conf, приведя его вот к такому примерно виду:
table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets
listen on lo0
action "local_mail" mbox alias <aliases>
action "outbound" relay host smtps://твойлогин@smtp.yandex.ru:465 auth <secrets>
match from local for local action "local_mail"
match from local for any action "outbound"
- Перезапускаем smtpd:
doas rcctl restart smtpd
и проверяем, что всё работает, отправив спам себе или близким:
$ echo "Текст тестового сообщения" | mail -s "Тема сообщения" -r твойлогин@yandex.ru получатель@почта.его
- Кстати, чтобы каждый раз не указывать почту отправителя (как в примере выше), можно, например, в
/etc/mail.rc
вписать строчкуset from="твойлогин@yandex.ru"
Вот вроде и весь рецепт.