Skip to content

18 Апрель 2012

114

Отправка почты с сайта ОТ и ДО.

web site mail

Частая задача при настройке сервера — настройка отправки почты. Способов это сделать много, как и подводных камней. Под катом будет подробно рассмотрен один из способов. От грубой установки необходимых утилит, до аккуратной обработки напильником, для предотвращения попадания в спам. Все будет проделано на Ubuntu Linux и с использованием SMTP сервера exim4.

:!: Настройка SMTP сервера

  1. Установка SMTP сервера exim4
    apt-get install exim4
  2. Конфигурирование SMTP сервера
    dpkg-reconfigure exim4-config
    Отвечаем:

    1. Internet site
    2. FQDN — вводим домен веб-сайта. Домен должен иметь такой-же IP адрес как и машина с exim4, через которую будем отправлять. Также желательно чтобы ваши письма в поле From, ссылались на адрес с этим доменом. Все это ради того, чтобы письма не попадали в спам.
    3. Бинд-адрес для SMTP сервера. Если использовать планируется только с этой-же системы — то пишем 127.0.0.1. Если планируется использование на других интерфейсах (например, отправка с другого сервера через этот SMTP), то оставляем пустым.
    4. Оставляем пустым, если не собираемся принимать почту (а мы не собираемся)
    5. Оставляем пустым, если не собираемся принимать почту (а мы не собираемся)
    6. Оставляем пустым, если не собираемся принимать почту (а мы не собираемся)
    7. No
    8. var/mail
    9. No
  3. Настройка FQDN
    Одна из проблем, которая точно возникнет при отправке на некоторые почтовые адреса — не валидный FQDN. Чтобы сделать его валидным, необходимо добиться, чтобы команда hostname -f возвращала такой-же домен, какой мы ввели в пункте 2.2. Для этого, необходимо отредактировать файл /etc/hosts, на первую строчку добавить:

    <IP> <FQDN> <HOSTNAME>

    Где IP — ip адрес машины, FQDN — то, что ввели в пункте 2.2, HOSTNAME — локальное имя машины, можно посмотреть в /etc/hostname

:!: Проверка

Чтобы убедиться, что exim настроен правильно, выполняем команду на отправку почты:

echo "текст сообщения" | mail -s "тема сообщения"  my_name@mail.ru

Если все работает корректно — на почту должно придти письмо. Возможно попадем в спам, нужно проверить. Если не пришло — лезем в /var/log/exim4/ и медитируем.

:!: Настройка PHP mail()

Самый легкий способ отправки почты с веб сайта на PHP — функция mail(). Если же ваш сайт на другом языке, или это вообще не веб, то необходимо научить ваше приложение работать с SMTP серверами. Компонент для работы с SMTP без труда можно найти абсолютно для любого языка. Ну, а у нас на PHP все уже реализовано, нужно только настроить.

  1. Открываем конфигурационный файл php/etc/php5/apache2/php.ini
  2. Ищем блок начинающийся с
    [mail function]
  3. Устанавливаем значения
    SMTP = localhost
    smtp_port = 25

:!: Корректировки в DNS — зоне

Для успешного преодоления спам фильтров Gmail, необходимо добавить такую запись на ваш DNS сервер:

site.ru. IN TXT "v=spf1 a mx ~all"

:!: Отключение IPv6

Если у вас в системе есть IPv6 адрес, то exim будет автоматически отправлять с него. Если при этом в DNS у вас этот адрес не прописан — это приведет к попаданию письма в спам. Проблему можно решить отключив IPv6 в exim. Для этого добавить в конфиг /etc/exim4/exim4.conf.template строку:

disable_ipv6=true

:!: Google Apps

Часто совместно с отправкой писем, настраивают еще Google Apps для приема. Тут возникнет проблема, если будет необходимо отправить через настроенный локальный exim письмо в Google Apps. exim посчитает этот адрес локальным, и будет пробовать отправить письмо локально, не проверяя MX записи у домена. Чтобы этого не происходило, необходимо закомментировать строчку domains =! +local_domains в файле /etc/exim4/exim4.conf.template

dnslookup:
    debug_print = «R: dnslookup for    $local_part@$domain»
    driver = dnslookup
    #domains =! +local_domains
    transport = remote_smtp

:!: Финиш!

Вот и сказки конец. Для отправки используется прозрачная PHP mail() функция, письма должны успешно доставляться на большинство почтовый сервисов.

114 коммент.
  1. Sharm
    1 Сен 2012

    upd.
    + Настройка FQDN
    + Google Apps

  2. Sharm
    28 Окт 2012

    upd.
    + Отключение IPv6

  3. tintin
    27 Ноя 2012

    Респект, мне очень в тему.

    1) disable_ipv6=’true’ лучше добавлять в /etc/exim4/update-exim4.conf.conf,
    ибо именно он генерится после выполнения dpkg-reconfigure exim4-config
    2) обнулить файл /var/log/exim4/paniclog, если он забился мессагами про нерабочий ipv6 (как в моём случае)
    чтоб exim стартанул

  4. 17 Янв 2013

    Большое спасибо!!! Очень помогла статья! Дня два ковырялся, ставил уже PostFix, а тут коротко и ясно! Автору респект!

Обсуждение закрыто.