Как настроить sendmail для отправки почты

Установка и настройка 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 под Windows

Данная статья входит в цикл статей, посвященных установке веб сервера на windows.

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

В этой статье я расскажу как установить и настроить sendmail на домашнем сервере под windows.
Для начала скачайте комплект sendmail.
Если у вас уже стоит sendmail можете его удалить, а на его место скопировать скаченные файлы.
Особенно это касается тех, кто устанавливал сервер с помощью xampp.
Дело в том, что в последних версиях xampp лежит новая версия sendmail, лично я так и не смог его запустить, к тому же он работает с уже другим типом конфигурации.
Возможно проблемы с этим новым sendmail и будут решены в дальнейшем, а пока предлагаю использовать старый проверенный вариант, который работает как «трактор».
Так же в архиве лежит две библиотеки, с помощью которых sendmail может работать с защищенными соединениями TLS, типа почты гугла(gmail).

Скачали архив, распаковали, закачали файлы в папку sendmail, если такой папки нет, создайте ее.
Для xampp это путь /xampp/sendmail.
Теперь открывайте настройки sendmail.ini, в архиве находится пример этого файла с русскими комментариями.
Привожу пример файла настроек

; конфигурационный файл sendmail

; здесь укажите сервер исходящей почты
smtp_server=smtp.mail.ru

; порт smtp, если обычный режим отправки, то порт будет 25
; если сервер работает в защищенном режиме (TLS), то порт 465, например почта гугла работает через 465 порт
smtp_port=25

; домен по умолчанию (совсем не обязательно)
;default_domain=local

; лог ошибок
error_logfile=error.log

; лог отправки, необходим на стадии тестирования. содержит весь текст переговоров с сервером при отправке писем.
debug_logfile=debug.log

; Если smtp сервер с авторизацией, укажите логин пароль(без кавычек), если без авторизации ничего не пишите
auth_username=
auth_password=

; если перед отправкой почты сервер требует авторизацию через POP, заполните эти поля
;pop3_server=
;pop3_username=
;pop3_password=

; email адрес, от которого идет отправка, вставится в заголовок «From: »
; если отправка писем идет через mail.ru, здесь обязательно должен быть адрес, через который произведена авторизация.
force_sender=

; хост, который указывается при авторизации в команде ehlo/helo
; указывайте домен, через который авторизуетесь
hostname=mail.ru

Вносите свои данные, логин-пароль и т.д. и все готово.
Сейчас настройте PHP, чтобы он мог использовать sendmail.
Откройте php.ini и найдите следующие строки

[mail function]
; SMTP = localhost
; smtp_port = 25
; sendmail_from = postmaster@localhost
sendmail_path = «\xampp\sendmail\sendmail.exe -t»

Первые строки указанные здесь закройте комментарием как показано (они не нужны), нужна только последняя строка указанная здесь, это путь до sendmail. Укажите свой путь и снимите комментарий (;) если он стоит.
Теперь перегружайте сервер и все готово, функция mail() должна работать.
Если возникают проблемы с отправкой почты, смотрите файлы error.log и debug.log в sendmail(если вы их конечно включили в настройках sendmail.ini)

Другие статьи, посвященные запуску сервера на windows

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

Комментарии

03.12.2010 Andrei
Если у мя сервер www.server.ru , то в
smtp_server=smtp.server.ru указываю так?

04.12.2010 админ
Andrei, совсем не обязательно.
Смотря как настроен smtp сервер.
Чаще всего mail.server.ru или smtp.server.ru. А может быть и без поддомена, например просто server.ru.
Это надо узнать там, где smtp сервер находится.

05.12.2010 Sheg
Письмо почему то не доходит.
В error.log:
SSL is not available on this server.
В чём проблема, smtp Гугловский.

05.12.2010 админ
Sheg, в ошибке сказано, что ваш сервер не поддерживает SSL соединение. Гугловская почта работает только в защищенном режиме SSL, поэтому вам нужно установить поддержку SSL для sendmail.
http://webi.ru/webi_files/sendmail_ssl.html — здесь комплект с поддержкой SSL.

09.12.2010 Вячеслав.
Все настроил, при отправке письма скрипт ошибок не выдает — но в итоге, письмо для адресата так и не доходит.
В чем может быть проблема ?
Спасибо.

09.12.2010 админ
Вячеслав, включите логи.
Лог ошибок и лог отправки и посмотрите в эти файлы.
И сразу все будет ясно.

10.12.2010 Вячеслав.
Логи включены — ни каких сообщение об ошибках нет.

10.12.2010 Evengar
Вчера всё работало норм, сегодня письмо не доходит через мейл.ру. Ошибка Socket Error # 10054 Connection reset by peer.

11.12.2010 админ
Вячеслав, ну а в debug.log что?
Там ошибок нет, по этим логам письмо отправляется?

11.12.2010 админ
Evengar, ну если вчера отправлялось, а сегодня нет, значит проблемы с вашей связью или с сервером mail.ru

21.12.2010 Алексей
У меня sendmail даже на *.exe никак не реагирует, не говоря о скриптах, и в логах тож ниче нет(((

21.12.2010 админ
Алексей, можно подробнее? Что значит «sendmail на *.exe не реагирует»?

26.12.2010 Виталий
debug — 31457280 250-8BITMIME 250-AUTH PLAIN LOGIN 250 STARTTLS
10.12.26 11:50:44 ** Authenticating as er45633
10.12.26 11:50:44 >> STARTTLS
10.12.26 11:50:44
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Socket Error # 10054 Connection reset by peer.

и письмо не отправляется в чем причина , что не так.

26.12.2010 админ
Виталий, что-то не совсем понятно. вроде начинается защищенное соединение и обрывается.
с другими серверами пробовали коннектиться?

04.01.2011 Алексей К.
Та же проблема с ошибкой:
«Socket Error # 10054 Connection reset by peer.»

И еще, по моему на Unix такой ошибки нету. Но письма все-равно не отправляются.

04.01.2011 Алексей К.
Спасибо вам большое .
Все получилось при использовании другого сервера почты!

04.01.2011
И еще вопрос,до каких размеров будет расти debug.log ? Или его можно отключить?

04.01.2011 админ
конечно лог отправки и лог ошибок можно отключить, просто удалите эту строку из конфига или закройте комментарием (;)

05.01.2011 Алексей К.
Спасибо еще раз! С Новым годом.

10.01.2011 Alex
Подскажите пожалуйста. Я первый раз пытаюсь настроить sendmail.
Вообщем если я правильно понял настройки которые в sendmail.ini это для почты с которой будет отправляться письма, а адресс почты который указан в mail(); это куда будет производиться отправка. Если да, все делаю по примеру, почта у меня на гугле:
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=name@gmail.com
auth_password=pass
force_sender=name@gmail.com
hostname=gmail.com

log из debug.log:

11.01.10 21:33:22 ** — MESSAGE END —
11.01.10 21:33:22 ** Connecting to smtp.gmail.com:465
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Error connecting with SSL.

log из error.log:

11.01.10 21:33:23 : Error connecting with SSL.

Источник

Как настроить 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 из портов или пакетов, необходимо создать глобальный конфигурационный файл. Пример конфигурации:

Источник

Оцените статью