The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка почтового сервера на базе Exim, MySQL и Dovecot во FreeBSD
Задача: необходимо установить и настроить почтовый сервер для нескольких почтовых доменов. 
В качестве МТА я выбрал Exim. Список доменов, пользователей и т.д. будут хранится в MySQL.
Итак, что мы имеем: ОС FreeBSD, на сервере 8 ip-адресов, MySQL сервер уже установлен. 

Приступаем к установке:

1. Добавляем в  /etc/make.conf опции для сборки exim (так же у меня указана версия MySQL, 
c которой собираются порты и в которых используется MySQL):

      DEFAULT_MYSQL_VER=51
      .if ${.CURDIR:N*/usr/ports/mail/exim} == ""
      WITH_MYSQL=yes
      WITH_SPF=yes
      WITH_SRS=yes
      WITHOUT_IPV6=yes
      WITHOUT_MAILSTORE=yes
      WITHOUT_MBX=yes
      WITHOUT_PASSWD=yes
      WITHOUT_PAM=yes
      WITHOUT_AUTH_SPA=yes
      WITHOUT_NIS=yes
      .endif

2. Устанавливаем exim с поддержкой MySQL из портов:

      cd /usr/ports/mail/exim ; make install clean ; echo 'exim_enable="YES"' >> /etc/rc.conf

3. Заменяем sendmail в /etc/mail/mailer.conf на exim:

      sendmail        /usr/local/sbin/exim
      send-mail       /usr/local/sbin/exim
      mailq           /usr/local/sbin/exim -bp
      newaliases      /usr/local/sbin/exim -bi
      hoststat        /usr/local/sbin/exim
      purgestat       /usr/local/sbin/exim

4. Создаём директорию, в которую exim будет складывать почту (у меня это /home/mail/domains)

      mkdir -p /home/mail/domains ; chown -R mailnull:mail /home/mail

5. Создаём БД для exim:

      mysqladmin -u root -p create exim_db

6. Создаём пользователя MySQL и выделяем ему права на БД:

      echo "GRANT SELECT, INSERT, UPDATE, LOCK TABLES, CREATE, DROP, DELETE, INDEX ON exim_db.* 
      TO exim@localhost IDENTIFIED BY 'Mta_MaileR'" | mysql -u root -p mysql

7. Создаём структуру таблиц (описание таблиц и полей в конце статьи):

      fetch -v http://www.sysadminpages.com/files/exim/exim_db.sql
      mysql -u exim -p exim_db < exim_db.sql

8. Подключаемся к БД и добавляем записи для 1-го почтового домена
(Для примера взял вымешленые имя домена и ip-адрес. Для рабочего почтового сервера необходимо 
заменить значения на реальные):

      mysql -u exim -p exim_db
      mysql>INSERT INTO domains VALUES('example.local','mail.example.local','10.1.10.1');
      mysql>INSERT INTO accounts (login, password, maildir, uid, gid, mailquota) 
      VALUES ('admin@example.local', 'Pass4Admin', '/home/mail/domains/example.local/admin/Maildir', 26, 26, 2000);

9. Конфигурируем exim. Конфиг длинный, и поэтому его описание я опускаю. 
Рабочий конфиг можно взять по адресу: https://www.opennet.ru/soft/exim.config

10. Запускаем exim

      /usr/local/etc/rc.d/exim start

11. Для проверки работоспособности отправляем тестовое письмо

      mail -s 'test message' admin@example.local
      test message
      .

Смотрим лог exim:

      tail /var/log/exim/mainlog

Если всё правильно настроено, то в логе будут записи примерно следующего содержания:

      2009-07-06 08:26:54 1MNnHZ-000CJx-U5 <= root@srv.example.local U=root P=local S=363
      2009-07-06 08:26:54 1MNnHZ-000CJx-U5 => admin <admin@example.local> R=localuser T=local_delivery
      2009-07-06 08:26:54 1MNnHZ-000CJx-U5 Completed

12. Устанавливаем dovecot

      cd /usr/ports/mail/dovecot
      make WITH_SSL=yes WITHOUT_IPV6=yes WITH_MYSQL=yes install clean 
      echo 'dovecot_enable="YES"' >> /etc/rc.conf

13. Конфигурируем dovecot

      mv /usr/local/etc/dovecot.conf /usr/local/etc/dovecot.conf.orig
      cd /usr/local/etc/
      fetch -v https://www.opennet.ru/soft/dovecot.conf
      fetch -v https://www.opennet.ru/soft/dovecot-sql.conf

14. Запускаем dovecot

      /usr/local/etc/rc.d/dovecot start

15. Настраиваем почтовый клиент на получение-отправку почты. В качестве логина
используем e-mail адрес.

Описание таблиц БД exim_db:

Таблица accounts - учётные записи пользователей
Таблица aliases - алиасы для почтовых адресов
Таблица domains - имена почтовых доменов, адреса МХ-ов и их ip-адресов
Таблица spam_domains - список "чёрных" доменов
Таблица spam_emails - список "чёрных" почтовых адресов
Таблица spam_ip_senders - список "чёрных" ip-адресов
Таблица white_domains - список "белых" доменов
Таблица white_emails - список "белых" почтовых адресов
Таблица white_ip_senders - список "белых" ip-адресов
 
09.07.2009 , Автор: Денис Кучерский , Источник: http://sysadminpages.com/2009/07/fr...
Ключи: mail, freebsd, exim, dovecot, imap
Раздел:    Корень / Администратору / Сетевые сервисы / Mail, почта / Отправка и пересылка сообщений на уровне пользователя

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, pazke (?), 11:55, 10/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    He многовато ли привилегий на exim_db дали ?
    Судя по конфигам и SELECT хватило бы.
     
  • 1.2, angra (ok), 12:33, 10/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Шаманы от IT в ударе. Статья сводится к одному предложению: установи все нужные пакеты и поставь готовые конфиги с данных адресов.
     
     
  • 2.3, csa (??), 13:01, 10/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    URL (https://www.opennet.ru/tips/info/2124.shtml) как-бы намекает - TIPS

    а по готовому конфигу уже можно рыть доки (ибо ясно, что именно рыть), а не блуждать в тумане, не понимая, что с чем нужно связать, чтобы хоть что-то заработало

    считайте это open source configs :)

     

  • 1.4, charon (ok), 18:54, 10/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    мне понравилось, что в ДиректАдмине всё это изящно реализовано без баз данных, в обычных текстовых файлах. Плюс еще ограничение на количество писем в день для логина включается созданием одного файла.
    На досуге и эту статью почитаю.
     
  • 1.5, Михаил Кривушин (?), 18:56, 10/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В самом начале моих разборок мне попалось подобное хофту по postfix+mysql+чего то еще. Так вот - нафиг мне эта база на самом деле не нужна была.
     
  • 1.6, BlackHawk (ok), 21:17, 10/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    мне всегда было интересно - чем же так MySQL приманил всех для почты?;) exim+openLDAP+courier делают свое дело на ура ;) и на много структурированее и нагляднее получается. тем более как показывает практика на загруженных машинах MySQL очень любит тупить, а если еще и и сайты там крутяться на чем-то типа joomla так вообще ховайся
     
     
  • 2.7, HFSC (??), 15:19, 11/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    чем нагляднее? ) добавлением через зад десяток собственных атрибутов в схему и написанием ограниченных фильтров? И кто сказал что опенлдап быстрее при большой нагрузке?
     
     
  • 3.8, expr (?), 23:42, 12/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ну как сказать, сервер поднятый еще 4 года назад на связке postfix + openldap + courier работает до сих пор без проблем и достаточно гибок. Главное в этом направлении решить что запихивать в ldap а что не стоит. Некоторые вещи, такие управление аккаутнами/доменами гораздо нагляднее и удобнее реализовывываются как раз через ldap, а вот фильтры, черные/белые списки и тд. лучше оставить на откуп плоским конф файлам. Да пришлось написать несколько скриптов обёрток для управления помимо ldap администратора, но так и для мускула придется писать, чтобы для наиболее частых действий не приходилось в консоли набивать селекты и инсерты, а веб интерфейсы по определению не гибки.
     
     
  • 4.9, HFSC (??), 00:39, 13/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    С sql гораздо проще добавлять в таблицу дополнительные поля и строить сложные фильтры, в моем конфиге exim например указано всего несколько макросов со сложными селектами для рутеров и транспортов.
    Для веба я просто взял исходники postfixadmin и вбил туда все нужные поля,селекты и инсерты, тк там очень простой интерфейс на пхп
     

  • 1.10, xz (??), 15:17, 14/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    под нагрузкой все это не взлетит 1 лишние лукапы на пустом месте domainlist lo... большой текст свёрнут, показать
     
  • 1.12, Ct2Sik (?), 14:10, 10/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что почтовики не хотят получать почту, например The Bat пишет "FETCH - Сервер сообщает об ошибке: -ERR Temporary authentication failure." Куда копать не подскажете? Спасибо
     
     
  • 2.13, daggerok (?), 23:52, 10/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Что почтовики не хотят получать почту, например The Bat пишет "FETCH -
    >Сервер сообщает об ошибке: -ERR Temporary authentication failure." Куда копать не
    >подскажете? Спасибо

    подскажу

    автор и так сделал практически все за Вас, но все-таки не плохо было бы разобраться.
    скорее всего, если вы просто передерли конфиги не вчитываясь в них это и есть причина.

    к примеру в статье автор пишет:

    >6. Создаём пользователя MySQL и выделяем ему права на БД:
    >
    >      echo "GRANT SELECT, INSERT, UPDATE, LOCK TABLES, CREATE, DROP, DELETE, INDEX ON exim_db.*
    >      TO exim@localhost IDENTIFIED BY 'Mta_MaileR'" | mysql -u root -p mysql

    тоесть пароль пользователя exim в базе данных в данном случае: Mta_MaileR

    далее он говорит
    >13. Конфигурируем dovecot
    >      mv /usr/local/etc/dovecot.conf /usr/local/etc/dovecot.conf.orig
    >      cd /usr/local/etc/
    >      fetch -v https://www.opennet.ru/soft/dovecot.conf
    >      fetch -v https://www.opennet.ru/soft/dovecot-sql.conf

    то есть нужно брать конфиг dovecot-sql.conf: по указной ссылке, но не тупо копировать а посмотреть что там написано хотя бы
    а вот там во второй строчке есть ответ на вашь вопрос:
    connect = host=localhost dbname=exim_db user=exim password=password

    то есть в конфиге автор указал соверщенно другой пароль: password

    в общем поменяйте эту строку на такую:

    connect = host=localhost dbname=exim_db user=exim password=Mta_MaileR

    и Ваши пользователи смогут получать почту

    ps - в целом, статья очень хорошая, так как почтовик взлетает практически с пол пенка
    единственное так это то что некоторые опции конфига dovecot немного изменились, к примеру параметр
    ssl_disable = yes
    нужно изменить на
    ssl = no
    и в секции protocol imap параметр
    login_greeting_capability = yes
    надо поменять на
    imap_capability = yes

     

  • 1.14, Nechaevr (?), 04:23, 11/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    кроме огромной благодарности больше сказать нечего
    реально отличный ман по установке почтового сервака
    все грамотно и работает
    автор где же тыл раньше
    если ты скинешь мне свою аську или мыло
    почту за честь поблагодарить и наградить тебя
    пивом + креветками )))
     
  • 1.15, Александр (??), 00:20, 15/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    FreeBsd 9
    MySql 5.1.61

    При выполнении команды mysql -u exim -p exim_db < exim_db.sql

    Выводит следующую ошибку:

    ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or' at line 1

    Что делать?

     
     
  • 2.16, Александр (??), 00:35, 15/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Понятно, файла там уже нет, подсовывается отлуп от сервера.
    Где взять?
     

  • 1.17, Сергей (??), 22:00, 04/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    помогите скачать дамп базы по ссылке http://www.sysadminpages.com/files/exim/exim_db.sql

    а то сайт не работает, кто может скиньте на мыло medvedko57354@mail.ru   СПАСИБО

     
     
  • 2.18, Алекс (??), 20:50, 05/10/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > помогите скачать дамп базы по ссылке http://www.sysadminpages.com/files/exim/exim_db.sql
    > а то сайт не работает, кто может скиньте на мыло medvedko57354@mail.ru  
    >  СПАСИБО

    Буду очень благодарен, если кто и мне поможет раздобыть сей файлик, или сбросит на почту itts@mail.ru

     

  • 1.19, Алексей (??), 11:02, 10/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нашел таки этот файл базы данных. На всякий случай залил еще на "народ", вдруг кому надо будет:

    http://yadi.sk/d/gPcu4Q3i3A2RV
    http://ussr.kiev.ua/files/exim_db.tgz

     
  • 1.20, Сергей (??), 18:59, 26/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Алексей, большое человеческое спасибо!!!!!!!!!!!!!!!
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру