OpenBSD Как отправить dmesg через OpenBSD mail



Предисловие

Здесь будет описано как настроить штатный SMTP-сервер OpenBSD OpenSMTPD таким образом, чтобы можно было сразу после устновки ОС отправить письмо с помощью входящей в базовую систему утилиты mail.

Это позволит отправить письмо содержащие вывод команды dmesg по адресу dmesg@openbsd.org, а также использовать утилиту sendbug для отправки сообщейний о неполадках. А настроив соотвествующим образом git можно будет отправлять письма, содержащие изменения исходного кода прямо из этой системы контроля версий.

Тем не менее назвать это полноценной найстройкой SMTP-сервера можно едва ли. В этой статье OpenSMTPD используется также как и какой-нибудь email-клиент, только отправляет письмо по протоколу SMTP на сервер провайдера электронной почты. Более сложные конфигурации и скачивание писем с сервера провайдера электронной почты в статье не рассмотрены. Не будет также примёров использования с провайдерами электронной почты protonmail и tutanota, так как они не позволяют использовать сторонний email-клиент без найстройки моста между клиентом и сервером.

Настройка почтового ящика

Какой бы провайдер электронной почты вами не был бы выбран, вам потребуется открыть веб-интерфейс почтового ящика и в настройках включить использование стороннего клиента электронной почты, а затем получить пароль приложения для email-клиента.
gmail

По инструкции включите возможность использования пароля приложений, создайте и сохраните его у себя, чтобы в дальнейшем при аутентификации OpenSMTPD смог пройти аутентификацию с помощью этого пароля приложений. Также из инструкции по настройке почтового клиента нужно запомнить адрес smtp сервера и порт и включить доступ по imap. Хотя в данной статье и затрунуто только взаимодествие по smtp.

yandex mail

Яндекс Справка: Настроить только отправку по протоколу SMTP

По этой инструкции можно и настроить почтовый ящик, и получить пароль приложения и узнать адрес smtp сервера yandex.

Настройка OpenSMTPD

Для начала создаём файл, в котором разместим почтовый адрес и полученный пороль приложений. Cоздаём так, чтобы права на него были только у почтового сервера. Пароль приложения всегда можно заново создать, имея доступ к веб интефейсу провайдер почты, однако получение пароля старонним лицом скомпроментирует данный аккаут, по этому имеет смысл хранить данный пароль только в этом файле.

touch /etc/mail/secrets
chmod 640 /etc/mail/secrets
chown root:_smtpd /etc/mail/secrets
echo "bob coolbob@example.com:password" > /etc/mail/secrets
    
Далее настроим сам почтовый сервер отредактировав файл /etc/mail/smtpd.conf Вы также могли бы ознакомиться с принципами его настройки прочтя мануал с соотвествующим названием. Я буду постпенно объяснять каждую необходимую строчку конфигурации.

Здесь включаем файлы с таблицами сопоставления, одна из которых содержит наш логин и пароль приложения.

table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets
    

Указываем smtpd на каком сетевом интерфейсе слушать подключения. В данном случае на loopback сетевом интерфейсе, доступным только изнутри и возвращающем пакеты назад на localhost.

listen on lo0
    
В конфиге уже будет указана деректива для отправки писем на локалхост. В этих письмах чаще всего оказывается информация от скриптов запускаемых cron. Таких как security(8) например. Здесь также можно выбрать формат храниния, заменив mailbox, на maildir. Добавляем директиву для перенаправлению писем на smtp сервер выбранного почтового провайдера.
action "local_mail" mbox alias <alias>
action "outbound" relay host smtp+tls://bob@smtp.example.com:587 \
      auth <secrets> 

Также в конфиге скорее всего есть деректива соотвествия для доставки письма с локалхоста на локалхост. Добавляем директиву, которая укажет соответвие для перенаправления всех отправленных с локалхоста, на внешний адресс.

match from local for local action "local_mail"
match from local for any action "outbound"
    

С этого момента вы можете отправить dmesg используя поставляемый с операционный системой почтовый клиент. Как это сделать описано в FAQ. В также можете использовать штатную утилиту для сообщения о неполадках — sendbug.

Отправка письмом коммита из git

Устанавливаем необходимые пакеты.

pkg_add git p5-Authen-SASL p5-Net-SMTP-SSL
    

В файле конфигурации системы контроля версий git указываем использовать программу, которая добавит наш коммит в очередь почтового клиента. Расположение этого файла можно узнать из документации.

[sendemail]
    smtpserver = /usr/sbin/sendmail
      

Теперь вы можете также использовать git send-email. Некоторым проектам, вроде ядра Линукс удобнее принимать патчи по электронной почте, а не pull request. А разработка OpenBSD в принципе подразумевает, что перед получением доступа к системе контроля версий CVS вы отправили некоторое количество патчей по почте в соответствующий мейлинлист.

Здесь вы можете попробовать этот способ взаимодествия с реальным репозиторием, а здесь ознакомиться с документацией.