- Установка и настройка sendmail
- Установка sendmail
- Настройка sendmail
- aliases
- access
- local-host-names
- virtusertable
- freebsd.mc
- Запуск и тестирование
- Не могу настроить sendmail
- Настройка SMTP авторизации
- Настройка sendmail как SMTP клиента с авторизацией
- Как заставить sendmail использовать /etc/hosts
- Хранение писем в Maildir
- Использование procmail в качестве LDA
- Настройка Sendmail для отправки почты без попадания в Спам
- Установка и настройка sendmail под Ubuntu
- Настройка sendmail под Windows
- Установка веб сервера на windows Настройка и защита apache под windows Бесплатный ДНС сервер Настройка php Настройка mysql Настройка phpmyadmin Настройка sendmail (эта статья) Настройка ftp сервера FileZilla
- Установка веб сервера на windows Настройка и защита apache под windows Бесплатный ДНС сервер Настройка php Настройка mysql Настройка phpmyadmin Настройка sendmail (эта статья) Настройка ftp сервера FileZilla
- Комментарии
Установка и настройка sendmail
Настраиваем sendmail (8.12.6/7/8) для виртуального почтового хостинга.
Установка sendmail
Сначала устанавливаем итз портов sendmail c поддержкой cyrus sasl (система аутентификации).
После установки sendmail мы должны изменить файл /etc/make.conf. Добавляем в него строчку
Если до этого стоял более старый sendmail, устанавливаем файл submit.cf
Для запуска sendmail будем использовать следующий сценарий (переименуем его в удобоваримый формат):
Для нормального запуска обновленной версии мы должны указать путь к ней (файл /etc/mail/mailer.conf). Это можно сделать либо при помощи команды
либо вручную, изменив файл mailer.conf:
На этом установка sendmail окончена. Осталоь столько запустить его командой
Сообщения sendmail sm-msp-queue говорят о том, что все прошло нормально.
Настройка sendmail
Будем считать, что мы настраиваем два виртуальных почтовых домена: perldoc.ru и perlfaq.ru. Для настройки sendmail c поддержкой виртуального постового хостинга нам потребуется создать (или изменить) следующие файлы:
- freebsd.mc
- aliases
- access
- local-host-names
- virtusertable
aliases
Этот файл описывает пользовательские псевдонимы, используемые sendmail. Файл расположен в каталоге /etc/mail и представляет собой список вида
Более подробно структура файла aliases описана в aliases (5). В этот файл мы добавляем строку
Вся локальная почта, адресованная пользователю root, теперь будет приходить на адрес admin@perldoc.ru.
access
В этом файле мы указываем, для каких IP адресов sendmail должен принимать и пересылать почту. Поскольку для эих целей мы будем использовать аутентификацию cyrus sasl, мы разрешим только отсылку с локального хоста
local-host-names
В этом файле мы храним названия доменов, для которых наш сервер должен обрабатывать почту. Поскольку мы хотим использовать наш сервер для двух виртуальных почтовых доменов perldoc.ru и perlfaq.ru, пропишем их в файл:
virtusertable
В файле virtusertable мы указываем sendmail, куда направлять почту, пришедшую на адреса в доменах perldoc.ru и perlfaq.ru.
Вся почта, пришедшая на адрес stellar@perldoc.ru будет направляться в почтовый ящик пользователя stellar-perldoc.ru, а почта, пришедшая на admin@perldoc.ru, соответственно будет отсылаться пользователю admin-perldoc.ru. Тоже самое будет и для домена perlfaq.ru. Если на наш домен будет прислана почта с несуществующем пользователем, сработает строчка
и sendmail откажется принимать такое сообщение.
freebsd.mc
Теперь нам осталось только изменить конфигурацию файла freebsd.mc, чтобы sendmail научился работать с виртуальными почтовыми доменами. Здесь надо понимать, что в том случае, когда существует файл, у которого имя совпадает с названием машины (например, для машины с именем genius файл будет genius.mc), он используется вместо файла freebsd.mc
Вот примерный вид конфигурационного файла:
В строке 6 мы задаем файл с пользовательскими псевдонимами; в десятой строке — имя файла трансляции виртуальных пользователей в настоящих, а в 36-й строке — названия доменов, для которых наш сервер должен обрабатывать почту.
Также ограничим максимальный размер письма одним мегабайтом (строка 49) и запретим рассылать письмо одновременно более, чем 10 получателям (строка 48). Если есть необходимость отправки всей почты на промежуточный SMTP сервер (например, на SMTP сервер провайдера), следует раскомментировать строку 31 и вместо «your.isp.mail.server» указать IP адрес или имя SMTP сервера провайдера.
Запуск и тестирование
Теперь, когда почти все сделано, нам надо пересобрать заново файл конфигурации sendmail и обновить базы данных. Делается это следующим набором команд:
Результатом будет нечто вроде этого:
/usr/bin/m4 -D_CF_DIR_=/usr/local/share/sendmail/cf/ /usr/local/share/sendmail/cf/m4/cf.m4 genius.mc > genius.cf /usr/sbin/makemap hash virtusertable.db Свойства почтового ящика -> Транспорт -> Аутентификация
Выделяем чекбокс «Аутентификация SMTP (RFC-2554)».
Переключаем кнопку «Использовать параметры, указанные ниже.»
Вводим имя пользователя и пароль, которые создали при помощи saslpasswd2.
Пользователь: admin-perldoc.ru@genius.
Пароль: *********
(!) Обратите внимание на то, что имя пользователя указано вместе с именем машины.
Выделяем чекбокс «Требовать безопасную (MD5) аутентификацию».
В том случае, если используется MS Outlook или другой почтовый клиент, в котором нет безопасной аутентификации (DIGEST-MD5, CRAM-MD5), необходимо использовать аутентификацию по методам PLAIN или LOGIN. При этом в качестве имени пользователя надо использовать имя пользователя БЕЗ добавленного имени машины. В нашем случае имя пользователя будет выглядеть так: admin-perldoc.ru.
После отправки письма в лог-файле /var/log/maillog должны быть примерно такие записи:
Источник
Не могу настроить sendmail
Начиная с версии 8.11, sendmail поддерживает защиту ESMTP соединения с помощью расширения STARTTLS ( RFC 2487 ). Для настройки TLS прежде всего нужно создать SSL сертификат и секретный DSA-ключ для шифрования:
Если у вас уже есть ключ шифрования, то для создания сертификата следует подать команду:
Параметр -days позволяет указать количество дней, в течение которых сертификат будет действительным. Чтобы проверить созданный сертификат, можно воспользоваться следующей командой:
Если вы не планируете использовать TLS для авторизации (не путать с SMTP авторизацией) или используете сертификат, подписанный самим собой, следует создать symlink:
В противном случае следует поместить сертификат авторизации в файл /etc/mail/certs/CAcert.pem . Не забудьте установить права, запрещающие чтение/запись файлов сертификатов и ключей простым пользователям:
Теперь следует настроить sendmail. В .mc файле конфигурации нужно добавить следующие строки:
После добавления вышеуказанных строк в файл конфигурации следует пересобрать его с помощью m4 (см. файл /usr/share/sendmail/README ) и рестартовать уже запущенный sendmail:
Для проверки настроек TLS можно воспользоваться командой telnet:
При правильной настройке в ответе сервера на команду «EHLO» должна присутствовать строка «250-STARTTLS». Смотрите также по данной теме starttls(8), ssl(8), http://www.sendmail.org/
Для того чтобы научить sendmail работать по SSL (без использования STARTTLS), нужно создать и добавить в .mc файл сертификат и ключ для шифрования, как описано выше, а также добавить следующие строки: Не забудьте перезапустить sendmail: Для проверки можно воспользоваться командой openssl:
Настройка SMTP авторизации
Для настройки авторизации следует пересобрать sendmail с поддержкой SASL. Для этого следует установить пакет cyrus-sasl2 или порт security/cyrus-sasl2 . Для включения поддержки SASL нам потребуется перекомпилировать sendmail следующим образом: Также можно воспользоваться набором site.tar.gz и пересобрать sendmail, установив настройку SENDMAIL_SASL=Yes в mk.conf.
Далее следует создать файл конфигурации SASL для sendmail ( /usr/local/lib/sasl2/Sendmail.conf ):
Добавляем в /etc/rc.local строки для запуска saslauthd:
Теперь остается только включить поддержку авторизации в .mc файле конфигурации sendmail:
Не забудьте перезапустить sendmail:
Для проверки настройки авторизации можно воспользоваться командой telnet:
При правильной настройке в ответе сервера на команду «EHLO» должна присутствовать строка «250-AUTH». В случае если в файле конфигурации запрещено использование PLAIN авторизации по незащищенному соединению, вместо команды telnet следует использовать команду openssl:
Смотрите также /usr/share/sendmail/README , Настройка TLS и SSL.
Настройка sendmail как SMTP клиента с авторизацией
В случае, когда sendmail выступает в роли клиента, демон saslauthd не требуется. В файл конфигурации необходимо внести следующие изменения:
Указываем SMTP-сервер, имя и пароль пользователя, а также метод аутентификации в отдельном файле /etc/mail/authinfo :
Создаем хэшированную базу данных /etc/mail/authinfo.db :
Как заставить sendmail использовать /etc/hosts
По умолчанию sendmail использует в первую очередь DNS. Чтобы заставить его сначала смотреть /etc/hosts , нужно создать файл /etc/mail/service.switch и прописать в нем следующую строку:
После этого достаточно перезапустить sendmail:
Хранение писем в Maildir
По умолчанию sendmail использует mail.local в качестве локального агента доставки почты. При этом почта доставляется в формате стандартного BSD mailbox. Чтобы доставлять почту в Maildir, нам потребуется установить альтернативный агент доставки mail.buhal , который можно скачать отсюда.
Сначала нужно собрать и установить mail.buhal:
Далее следует указать mail.buhal в файле конфигурации sendmail в качестве локального агента доставки:
Теперь достаточно перекомпилировать файл конфигурации и перезапустить sendmail.
В портах OpenBSD, в категории mail , есть программы procmail и maildrop , которые также поддерживают формат Maildir и дополнительные расширения данного формата.
Использование procmail в качестве LDA
После установки procmail из портов или пакетов, необходимо создать глобальный конфигурационный файл. Пример конфигурации:
Источник
Настройка Sendmail для отправки почты без попадания в Спам
Столкнулся с проблемой: на правильно настроенном сервере Apache с установленными модулями и настроенными доменными записями у провайдера — письма отправленные через функцию mail из скриптов php попадали в спам или не доставлялись вовсе.
Начал разбираться и не смог найти не одной полноценной публикации в рунете, которая раскрывала бы проблему и помогала решить все вопросы.
Вашему вниманию представляю собранный из разных источников, проверенный и используемый способ настройки сервера для правильной отправки писем sendmail.
Система: Ubuntu 20.06
Почтовый сервис: Яндекс
1. Установка Sendmail
Если по какой-то причине не был установлен. Произведите базовую установку и настройку
Вместо noreply@site.ru пишем почту на которую будут приходить отчеты (заголовок Return-Path:).
Заголовок «Return-Path:» является важным заголовком в глазах почтовых сервисов.
Если его не установить, заголовок будет равен примерно такому значению «Return-Path: ».
Очень желательно чтобы значение заголовка всегда совпадало с именем домена с которого отправляется письмо, независимо от значения заголовка «From:», иначе оно может быть отправлено в «Спам» или же отклонено вовсе.
2. Настройка DNS записей
Нам необходимо настроить SPF, DMARC, DKIM записи.
Какая за что отвечает расписывать не буду. В рунете огромное количество инструкций.
Если тоже используете какой-либо почтовый сервис, у них свои подробные инструкции по настройке.
На что следует обратить внимание — чтобы в SPF был прописан IP-адрес сервера.
Затем следует запросить у провайдера DNS-хостинга обратную запись rDNS (PTR-запись).
Привязать свой домен к ip-адресу сервера.
Как правило провайдер самостоятельно ее устанавливает по запросу.
4. Изменить hostname
Установить hostname равный названию нашего домена:
5. Редактировать файл sendmail.mc
Переходим к файлу /etc/mail/sendmail.mc
Нам необходимо настроить заголовки «Received: from» и «Received: by». Они являются важными при определении уровня доверия к серверу отправляющему электронную почту.
Добавляем следующие строки в конце файла перед MAILER_DEFINITIONS
И в конец файла:
6. Проверяем настройки apache и файервола
Ищем строчки и заменяем www-data на текущего пользователя под которым запущен apache
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
7. Обновляем конфигурацию и перезагружаем sendmail
Источник
Установка и настройка sendmail под Ubuntu
При отправке сообщения через форму обратной связи появляется ошибка с текстом «Произошла ошибка при попытке отправить почту. Could not instantiate mail function.» Возникать она может при отсутствии на хостинге агента sendmail или модуля php-mail.
На нормальных хостинговых площадках отправка почты через sendmail настроена по умолчанию, поэтому стоит поискать причины появления этой ошибки в настройках CMS или коде сайта. В моем случае веб-сервер настраивался мной и причина оказалась в отсутствии вышеуказанного агента и модуля. Вот как они устанавливаются в Ububntu:
1. Устанавливаем модуль php-mail если он еще не стоит:
2. Устанавливаем sendmail:
Ответьте на вопросы, которые будут заданы. Ниже перечислены основные файлы, в которые будут внесены изменения:
3. Если все в порядке, правим «php.ini»
Находим закомментированую строку «;sendmail_path = » (поиск в nano ctrl+w). Заменяем на строку следующего содержания:
4. Делаем рестарт Apache
5. Проверить работоспособность sendmail можно двумя командами:
В течении минуты на указанный электронный адрес должно прийти письмо. Если этого не произошло, то следует посмотреть логи отправки в каталоге «/var/log/syslog». Если в логах появилось сообщение: «Connected time out», значит или firewall не пропускает пакеты через порт 25, или ионтернет-провайдер. Проверить это можно командой telnet:
Если результатом работы команды стало так же «Connected time out», то разбирайтесь, где блокируется порт 25.
Источник
Настройка sendmail под Windows
Данная статья входит в цикл статей, посвященных установке веб сервера на windows. Установка веб сервера на windows |
Другие статьи, посвященные запуску сервера на windows Установка веб сервера на windows |