Найти в Дзене
Записки сисадмина

Postfix. Отправка писем из терминала linux

Предположим, есть у нас сервер, на котором расписаны задачи в планировщике cron. Наши скрипты запускаются, но не дают нам никакого вывода о результате. В теории, можно посмотреть логи (если они настроены и пишутся), но каждый день заниматься таким явно не захочется. Возникает задача: каким-то образом отправлять уведомления ответственным людям. И первое, что приходит на ум - почта. Старый добрый email, который никогда нас не подводил. В этом деле нам поможет почтовый релей Postfix. Древний как мамонт, безопасный и гибкий, а самое главное - легко настраивается и вообще не нагружает нашу систему. Давайте сразу смоделируем наши вводные: Мы создали аккаунт на яндекс почте "test_sender@yandex.ru" с паролем "secured_password". Также у нас есть сервер на CentOS 7 с ip 192.168.1.1 и доменным именем example.com. yum -y install mailx postfix cyrus-sasl-plain Приводим файл /etc/postfix/main.cf к следующему виду: queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory =

Предположим, есть у нас сервер, на котором расписаны задачи в планировщике cron. Наши скрипты запускаются, но не дают нам никакого вывода о результате. В теории, можно посмотреть логи (если они настроены и пишутся), но каждый день заниматься таким явно не захочется.

Возникает задача: каким-то образом отправлять уведомления ответственным людям. И первое, что приходит на ум - почта. Старый добрый email, который никогда нас не подводил.

В этом деле нам поможет почтовый релей Postfix. Древний как мамонт, безопасный и гибкий, а самое главное - легко настраивается и вообще не нагружает нашу систему.

Давайте сразу смоделируем наши вводные:

Мы создали аккаунт на яндекс почте "test_sender@yandex.ru" с паролем "secured_password".

Также у нас есть сервер на CentOS 7 с ip 192.168.1.1 и доменным именем example.com.

  • Устанавливаем postfix и необходимые пакеты на сервер:
yum -y install mailx postfix cyrus-sasl-plain

Приводим файл /etc/postfix/main.cf к следующему виду:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.example.com
mydomain = example.com
myorigin = yandex.ru
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.1/8, 192.168.1.1/32
relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

Можете просто скопировать мой шаблон конфигурации и изменить под себя только переменные myhostname, mydomain, myorigin, mynetworks.

  • Отредактируем остальные системные файлы postfix:

/etc/postfix/aliases приводим к виду:

root: your_name

после двоеточия можете вписать любое имя, ни на что особо не влияет

/etc/postfix/canonical

@yandex.ru test_sender@yandex.ru

/etc/postfix/saslpass

smtp.yandex.ru test_sender@yandex.ru:secured_password

/etc/postfix/sender_relay

@yandex.ru smtp.yandex.ru

  • После того, как мы отредактировали наши конфигурационные файлы, генерируем базы:
postmap /etc/postfix/canonical
postmap /etc/postfix/saslpass
postmap /etc/postfix/generic
postmap /etc/postfix/sender_relay

  • Запускаем наш сервис и добавляем его в автозагрузку:
systemctl start postfix
systemctl enable postfix

  • Проверяем работу postfix, отправляя сообщения по шаблону:
echo "Текст письма"| mail -s "Тема письма" "Получатель"
Например,
echo "Мы справились"| mail -s "Postfix заработал" "user@domain.com"

Далее мы уже сможем отправлять сообщения из скриптов, перенаправляя их вывод в текст письма.