Дорогой читатель! IP – АТС Asterisk использует e-mail сообщения для отправки уведомлений о различных событиях: голосовая почта, факс, доступные обновления модулей, технические проблемы и много других информативных нотификаций. «Из коробки», для отправки почты используются внутренние механизмы, но что если мы хотим вписать Asterisk в почтовый домен? Для решения данного вопроса можно прибегнуть к двум методам:
- Приобретение модуля System Admin Pro за $25 (на
- Настройка встроенного почтового сервера 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
Выше мы рассмотрели частный случай настройки Яндек.Почты для домена. Давайте пошагово рассмотрим настройку любого другого SMTP:
- Подключаемся по SSH к консоли сервера
- Открываем файл /etc/postfix/main.cf
- добавляем relayhost = [ip – адрес SMTP сервера]
- Выполняем команду
service postfix restart
- Открываем файл /etc/postfix/sasl_passwd
- добавляем запись вида [ip – адрес SMTP сервера] логин:пароль
- Даем команду
postmap hash:/etc/postfix/sasl_passwd
- Снова открываем файл /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
- Выполняем команду
service postfix restart
- Открываем файл /etc/postfix/generic
- добавляем в него строчки, которые добавили на этапе настройки Яндекс.Почты:
root настраиваемый_почтовый_ящик asterisk настраиваемый_почтовый_ящик ….
- Выполняем команду
postmap /etc/postfix/generic
- Выполняем команду
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