img

Postfix: настройка отправки почты в Asterisk

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Дорогой читатель! IP – АТС Asterisk использует e-mail сообщения для отправки уведомлений о различных событиях: голосовая почта, факс, доступные обновления модулей, технические проблемы и много других информативных нотификаций. «Из коробки», для отправки почты используются внутренние механизмы, но что если мы хотим вписать Asterisk в почтовый домен? Для решения данного вопроса можно прибегнуть к двум методам:

  1. Приобретение модуля System Admin Pro за $25 (на
  2. Настройка встроенного почтового сервера Postfix через консоль сервера. Это бесплатно :)

Мы не ищем легких путей, поэтому, в статье расскажем как настроить Postfix для отправки почтовых уведомлений IP – АТС. В качестве примера рассмотрим настройку Яндекс. Почты для домена и общий случай.


Как работает электронная почта: SMTP, IMAP, POP3


Настройка Яндекс. Почты

Подключаемся к консоли нашего сервера IP – АТС через SSH под пользователем root. Открываем для редактирования файл конфигурации Postfix:

[root@asterisk]# vim /etc/postfix/main.cf

Нажимаем «О» для редактирования и добавляем в него следующую конфигурацию (предварительно удалив комментарии):

smtp_sasl_auth_enable = yes //включаем SMTP аутентификацию для SMTP - демона
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd //указываем Postfix путь для файла, в котором хранятся пароль и логин для авторизации на SMTP сервере
smtp_sasl_security_options = noanonymous //мы будем посылать запрос на авторизацию в открытом виде (нешифрованные логин и пароль)
smtp_sasl_type = cyrus // использование библиотеки Cyrus SASL для аутентификации
smtp_sasl_mechanism_filter = login //предлагаемый SMTP клиентом механизм SASL аутентификации
smtp_sender_dependent_authentication = yes //аутентификация в зависимости от отправителя
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay //данная переменная указывает переписывать глобальную настройка relayhost. В данном случае мы будет сравнивать домен отправителя и релэй, куда отправлять почту.
sender_canonical_maps = hash:/etc/postfix/canonical //через какой аккаунт отправлять почту с определенного домена
smtp_generic_maps = hash:/etc/postfix/generic //данная настройка указывает правила, согласно которым, необходимо подменять адрес отправителя письма
smtp_use_tls = yes //у Яндекс. Почты используется TLS
myhostname = asterisk.merionet.ru //хостнейм вашего сервера
mydomain = merionet.ru //домен сервера
myorigin = $mydomain //в данном случае, при отправлении первоначального письма от пользователя root, email адрес отправителя будет root@merionet.ru (в последствие будет заменен согласно правилам переменной smtp_generic_maps)
mynetworks = 127.0.0.0/8 //авторизованная часть сети. Для отправки почты от Asterisk’а оставьте данную настройку как есть
relayhost = [smtp.yandex.ru]:465 //SMTP Яндекс

По окончанию настроек нажимаем :x! и Enter. Начнем конфигурировать файлы, к которым мы указали ссылки в конфигурации main.cf. Открываем файл /etc/postfix/sasl_passwd :

[root@asterisk]# vim /etc/postfix/sasl_passwd

Указываем там следующие параметры:

[root@asterisk]# 
[smtp.yandex.ru] логин:пароль

В качестве логина и пароля используются реквизиты доступа к настраиваемому почтовому адресу. Нажимаем :x! и Enter. Теперь поработаем с файлом sender_relay:

Обратите внимание, что если Вы производите почту для домена от Яндекс. Почты, в поле логин нужно указывать полностью почтовый ящик.
[root@asterisk]# vim /etc/postfix/sender_relay

Вносим следующую конфигурацию:

[root@asterisk]# @домен [smtp.yandex.ru]
пользователь@домен [smtp.yandex.ru]

Для корректной настройки, советуем предварительно перепроверить имя хоста командой hostname, отбросив хостовую часть и точно определив домен. Так же, в качестве отправителя, Вы можете добавить строчку asterisk@домен [smtp.yandex.ru]. Сохраняем изменения указанным ранее способом.

Идем дальше и приступаем к работе с файлом canonical:

[root@asterisk]# vim /etc/postfix/canonical 

Добавляем:

@домен  настраиваемый_почтовый_ящик

В данной настройке мы подсказываем Постфиксу, что отправлять почту с нашего домена нужно через настраиваемый почтовый ящик. Сохраняем изменения. Переходим к настройке generic:

[root@asterisk]# vim /etc/postfix/generic

Здесь мы будем подменять адрес отправителя. Это очень важно поле, так как по умолчанию, в письмо в поле From: будет подставляться значение пользователь@домен. Заполняем:

root настраиваемый_почтовый_ящик 
root@localhost настраиваемый_почтовый_ящик 
root@localhost.localdomain настраиваемый_почтовый_ящик 
root@freepbx настраиваемый_почтовый_ящик 
root@freepbx.localdomain настраиваемый_почтовый_ящик 
asterisk настраиваемый_почтовый_ящик 
asterisk@localhost настраиваемый_почтовый_ящик 
asterisk@localhost.localdomain настраиваемый_почтовый_ящик 
asterisk@freepbx настраиваемый_почтовый_ящик 
asterisk@freepbx.localdomain настраиваемый_почтовый_ящик

Сохраняем изменения :x!. Готово, теперь необходимо выполнить команду:

[root@asterisk ~]# postmap /etc/postfix/generic && postmap /etc/postfix/canonical && postmap /etc/postfix/sender_relay && postmap /etc/postfix/sasl_passwd 

И затем перезагружаем Postfix:

[root@asterisk ~]# service postfix restart
Shutting down postfix:                                  [  OK  ]
Starting postfix: :                                     [  OK  ]

Выполняем проверку. Отправьте тестовое пустое письмо на свой личный почтовый ящик:

[root@asterisk ~]#  mail -s "Postfix Test with Yandex" ваш_email < /dev/null

Как результат, получаем письмо на адрес электронной почты:

Postfix: настройка отправки почты в Asterisk

Общий случай настройки Postfix

Выше мы рассмотрели частный случай настройки Яндек.Почты для домена. Давайте пошагово рассмотрим настройку любого другого SMTP:

  1. Подключаемся по SSH к консоли сервера
  2. Открываем файл /etc/postfix/main.cf
    • добавляем relayhost = [ip – адрес SMTP сервера]
  3. Выполняем команду service postfix restart
  4. Открываем файл /etc/postfix/sasl_passwd
    • добавляем запись вида [ip – адрес SMTP сервера] логин:пароль
  5. Даем команду postmap hash:/etc/postfix/sasl_passwd
  6. Снова открываем файл /etc/postfix/main.cf
    • добавляем
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      smtp_sasl_security_options =
      smtp_generic_maps = hash:/etc/postfix/generic
      
  7. Выполняем команду service postfix restart
  8. Открываем файл /etc/postfix/generic
    • добавляем в него строчки, которые добавили на этапе настройки Яндекс.Почты:
      root настраиваемый_почтовый_ящик 
      asterisk настраиваемый_почтовый_ящик 
      ….
      
  9. Выполняем команду postmap /etc/postfix/generic
  10. Выполняем команду service postfix restart

Возможные ошибки

После команды тестовой отправки почты смотрим лог:

[root@asterisk ~]# tail -f /var/log/maillog

Если наблюдаете ошибку вида 503 5.5.4 Error: send AUTH command first. , то она означает, что email с которого мы пытаемся отправить сообщение отбивается SMTP сервером (как правило, это видно в выводе лога в поле from=<>). В таком случае, проверьте корректность настроек файла /etc/postfix/generic.

Если в логах обнаружили ошибку warning: SASL authentication failure: No worthy mechs found, то вам необходимо установить механизм аутентификации SASL (Simple Authentication and Security Layer). Сделать это можно с помощью команды ниже:

[root@asterisk ~]# yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Если на этапе отладки Вы получаете ошибку вида bash: mail: команда не найдена, то Вам необходимо установить Unix утилиту mailx. Сделать это можно с помощью этой команды:

[root@asterisk ~]# yum install mailx
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker