Однажды на работе возникла необходимость использования одной системы, для которой было нужно постоянно получать и устанавливать обновления, а результаты обновлений - передавать представителю разработчика.
Мой мозг сразу же предложил написать скрипт, который бы отбирал из пакета обновлений нужные, распаковывал их и закидывал по сети на сервер, запускал "удалённый рабочий стол" (увы, иначе никак), загружал отчёты и отправлял их по электронной почте.
Вскоре скрипт был написан, отлажен и запущен в работу. Затык возник на последнем пункте, поскольку организация своего сервера не имеет, и сотрудники используют почтовые ящики на яндексе и других сайтах.
Увы, прочтение имевшихся под рукой книг и гугление ничего хорошего не дали. Везде было написано, что отправка письма из консоли производится командой
mail, но ни одно руководство не содержало никакой информации о том, куда для этого надо прописать логин, пароль и адрес почтового сайта. Размещение вопроса на некоторых тематических конференциях привело опять же к появлению множества ответов "погугли" и
"man mail"Тем не менее, повторный сеанс глубинного гугления таки навёл на решение
1. Устанавливаем на свой компьютер локальный smtp-сервер
sudo apt-get install postfix2. Настраиваем его путём редактирования файла /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
delay_warning_time = 1h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
# computername - это имя моего служебного компьютера, замените на имя своего
myhostname = computername
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = computername, localhost.localdomain, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# сервер, через который по умолчанию будет пересылаться вся почта
relayhost = smtp.pochta.ru:25
# файл, в котором прописано правило подмены адреса отправителя в письме
sender_canonical_maps = hash:/etc/postfix/sender_canonical
# использовать защищённые каналы связи
smtp_use_tls = yes
# файл с доверенными сертификатами почтовых серверов
smtp_tls_CAfile = /etc/postfix/sasl/smtp-servers.pem
smtp_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtp_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
# файл с логинами и паролями почтовых ящиков
smtp_sasl_password_maps = hash:/etc/postfix/sender_password
3. Прописываем нужные значения в файлы с параметрами
файл /etc/postfix/sender_canonical
username@computername mymailbox@pochta.ruфайл /etc/postfix/sender_password
smtp.pochta.ru:25 mymailbox@pochta.ru:mypassword* заполняется согласно требованиям указанного сервера по настройки почтовых программ.
4. Устанавливаем для этих файлов права доступа только для root (ведь в них пароли храниться будут)
cd /etc/postfix
sudo chown root:root sender*
sudo chmod 600 sender*Преобразовываем эти файлы в базы данных нужного формата
sudo postmap sender_canonical
sudo postmap sender_password5. Заполняем файл сертификатов почтовых серверов /etc/postfix/sasl/smtp-servers.pem
openssl s_client -starttls smtp -crlf -connect smtp.pochta.ru25Эта команда выведет в консоль много текста. Содержимое между -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- (включительно) нужно будет скопировать в к себе файл сертификатов
Ну в общем-то всё. Теперь команда
mail , о которой столько раз мне говорили мастера погуглить и эртээфэмить отправляет почту с нужного мне почтового ящика.
Указанный конфиг исправно работает уже несколько месяцев.
Тем не менее, я всегда готов выслушать дополнения и замечания более компетентных товарищей