Документация по ОС FreeBSD Воскресенье, 28.04.2024, 01:50
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Mail

Конфигурирование виртуальных доменов Cyrus+Postfix в FreeBSD 5.4
Cyrus IMAP является эффективным сервером IMAP и способен к работе с большим числом учетных записей. Самым большим его недостатком является сложность в установке и конфигурировании. В этой статье мы рассмотрим как можно использовать Cyrus в связке с Postfix в качестве агента почтовой доставки (MTA). Все приведенные здесь инструкции проверялись на FreeBSD 5.4.

Postfix является заменой sendmail и входит в стандартную поставку FreeBSD. Он проще в конфигурировании, но если вы зависите от sendmail, то, хотя и по прежнему можете смотреть здесь настройку Cyrus, вам необходимо обратиться к руководству по настройке Sendmail для конфигурирования MTA.

Если не указано иное, то все операции выполняются с правами пользователя root. Мы будем использовать систему портов, поэтому если вы плохо с ней знакомы, то обратитесь к Главе 4 Руководства пользователя FreeBSD.

Установка и настройка

Для установки Cyrus и Postfix на FreeBSD были использованы следущие порты:
  • Sasl2 2.1.21
  • Cyrus 2.2.12
  • Postfix 2.23
Компонент SASL2 отвечает за аутентификацию и будет подтверждать полномочия любой почтовой программы, запросившей почту. Все пользователи, имеющие почтовые ящики, должны иметь запись в базе данных SASL2. Также, любые ID, которые вы планируете использовать для управления Cyrus нуждаются в ID в SASL. Для SASL ID необходимости в Cyrus IMAP ID нет.

Cyrus управляет почтовыми ящиками пользователей, которые должны иметь свои ID для получения почты.

Postfix доставляет почту в Cyrus. Postfix должен знать о каждом пользователе через файл карты псевлонимов. В этом файле определяется соответствие почтового адреса внутреннему почтовому ящику пользователя, при этом есть возможность указать несколько адресов для одного ящика.

В качестве базы данных используется Berkeley DB, в данной статье используется версия 4.3, но возможна рабоота и с другой версией.

SASL2

Установка из системы портов:
      
      # cd /usr/ports/security/cyrus-sasl2
      # make WITHOUT_OTP=YES WITHOUT_NTLM=YES WITHOUT_GSSAPI=YES WITH_BDB_VER=43 
      # make install clean
      
OTP, NTLM и GSSAPI являются различными механизмами аутентификации и не используются в этой статье. Если вы планируете использовать другие механизмы, то укажите их, исключив лишние.

WITH_BDB_VER=43 указывает на использование базы данных Berkeley 4.3.

Для проверки правильности установки SASL2, выполним:
      
      # rehash
      # saslpasswd2 -c admin
      # sasldblistusers2
      admin@domain1: userPassword
      
saslpasswd2 с параметром -c указывает SASL2 создать пользователя admin, а команда sasldblistusers2 отображает список пользователей.

Cyrus

После команды make вы увидите меню. Сразу нажимаем OK, так как не нуждаемся ни в каких опциях кроме указывающей на использование Berkeley DB.
      
      # cd /usr/ports/mail/cyrus-imapd22
      # make USE_BDB_VER=43
      # mail install clean
      
Необходимо создать каталог, где будут храниться файлы IMAP:
      
      # mkdir /var/imap
      # mkdir /var/imap/spool
      # chown -R cyrus:mail /var/imap
      # chmod -R 750 /var/imap
      
По умолчанию Cyrus использует каталоги /var/imap и /var/spool, но я использую /var/imap и /var/imap/spool, что облегчает задачи резервного копирования.

Для запуска Cyrus во время начальной загрузки, необходимо добавить следущую строку в /etc/rc.conf:
      
      
      cyrus_imapd_enable="YES"
      
Postfix и Cyrus взаимодействуют между собой через сокет, его имя и размещение указано в /usr/local/etc/cyrus.conf. Закомментируйте строку, содержащую lmtp и добавльте:
      
      lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
      
Главным файлом конфигурации Cyrus является /usr/local/etc/imapd.conf. Его краткое содержание представлено ниже, обратите внимание на комментарии:
      
      
      configdirectory: /var/imap [1]
      partition-default: /var/imap/spool
      sievedir: /var/imap/sieve
      admins: user1@domain1 user2@domain2 admin [2]
      allowanonymouslogin: no
      autocreatequota: 10240
      reject8bit: no
      quotawarn: 90
      timeout: 30
      poptimeout: 10
      dracinterval: 0
      drachost: localhost
      sasl_pwcheck_method: auxprop
      lmtp_overquota_perm_failure: no
      unixhierarchysep: no
      virtdomains: userid
      defaultdomain: domain1 [3]
      loginrealms: domain1,domain2 [4]
      
[1] Для использования другого хранилища сообщений, измените значения configdirectory, partition-default и sievedir. Хотя и не рекомендуется размещать partition-default внутри configdirectory, здесь это сделано именно так.

[2] Если вы хотите, чтобы с ID можно было управлять всеми доменами, то не следует указывать параметр domain. В случае, когда домен указан, администрировать можно только конкретный домен.

[3] Домен по умолчанию. Если домен, при создании пользователя, не указывается, то используется домен по умолчанию.

[4] Список всех доменов, которые вы планируете обслуживать. Для получения дополнительной информации обратитесь к /usr/local/etc/imapd.conf.original и man imapd.conf.

Теперь нам необходимо создать несколько каталогов, необходимых для подготовки Cyrus к работе:
      
      # su cyrus
      >/usr/local/cyrus/bin/mkimap
      
и, с правами пользователя root:
      
      # /usr/local/etc/rc.d/imapd.sh start
      
Проверим работу:
      
      
      #telnet localhost 143
      Escape character is '^]'.
      * OK computer.domain.com Cyrus IMAP4 v2.2.12 server ready
      
Для выхода используйте команду a1 logout.

Для каждого почтового ящика необходимо создать и SASL2 и Cyrus ID. Для примера, создадим пользователя test в домене domain1:

Создаем SASL2 ID:
      
      saslpasswd2 -c test@domain1
      Password:
      Again (for verification):
      
      # sasldblistusers2
      test@domain1.com: userPassword
      
      
Создаем Cyrus ID, учтите, что вам понадобится пароль пользователя admin, изменить его можно командой saslpasswd2 admin:
      
      #cyradm --user admin localhost
      Password:
      localhost.domain1>
      cm user.test@domain1
      lm
      test@domain1 (\HasNoChildren)
      quit
      

Postfix

В меню, открывшемся при установке, выберите пункты Cyrus SASL v2 и Berkeley DB4.3. Также будет задан вопрос о добавлении пользователя postfix в группу mail и активации Postfix в /etc/mail/mailer.conf. Соглашаемся с предложенным.
      
      # cd /usr/ports/mail/postfix
      # make install clean
      # rehash
      
Редактируем /etc/rc/conf:
      
      sendmail_enable="NONE"
      sendmail_flags="-bd"
      sendmail_pidfile="/var/spool/postfix/pid/master.pid"
      sendmail_outbound_enable="NO"
      sendmail_submit_enable="NO"
      sendmail_msp_queue_enable="NO"
      
Создадим символическую ссылку, необходимую для запуска во время начальной загрузки:
      
      # cd /usr/local/etc/rc.d
      # ln -s /usr/local/sbin/postfix postfix.sh
      
Также необходимо отключить спечифичные для Sendmail инструкции в файле /etc/periodic.conf:
      
      daily_clean_hoststat_enable="NO"
      daily_status_mail_rejects_enable="NO"
      daily_status_include_submit_mailq="NO"
      daily_submit_queuerun="NO"
      
Когда Postfix уже сконфигурирован, необходимо создать базу данных псевдонимов alias.db и запустить Postfix:
      
      
      # newaliases
      # ls -l /etc/aliases.db
      # postmap /usr/local/etc/postfix/virtual
      # postfix start
      
Хотя, описанный в статье, процесс установки и не использует этот файл, он необходим для работы Postfix. Теперь проверим его работу:
      
      telnet localhost 25
      You should see a prompt
      Trying 127.0.0.1...
      Connected to < your host name >
      Escape character is '^]'.
      quit
      
Также есть необходимость отредактировать еще один файл - /usr/local/etc/postfix/main.cf. Изменим его следующим образом (обратите внимание, что цифры в квадратных скобках являются комментариями и должны быть удалены из файла конфигурации):
      
      command_directory = /usr/local/sbin
      daemon_directory = /usr/local/libexec/postfix
      mailq_path = /usr/local/bin/mailq
      manpage_directory = /usr/local/man
      newaliases_path = /usr/local/bin/newaliases
      queue_directory = /var/spool/postfix
      sample_directory = /usr/local/etc/postfix
      sendmail_path = /usr/local/sbin/sendmail
      
      mail_owner = postfix
      soft_bounce = no
      
      myhostname = domain1 [1]
      myorigin = $mydomain
      relay_domains = $mydestination
      local_recipient_maps = $virtual_mailbox_maps
      recipient_delimiter = +
      debug_peer_level = 2
      
      unknown_local_recipient_reject_code = 550
      
      setgid_group = maildrop
      html_directory = no
      readme_directory = no
      masquerade_domains = $mydomain
      smtpd_recipient_restrictions =
       reject_non_fqdn_recipient
       permit_mynetworks
       reject_unauth_destination
       reject_unknown_sender_domain
       permit
      smtpd_helo_restrictions = reject_invalid_hostname
      smtpd_require_helo = yes
      
      mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
      virtual_transport = lmtp:unix:/var/imap/socket/lmtp
      virtual_mailbox_domains = domain2, domain3 [2]
      virtual_alias_maps = hash:/usr/local/etc/postfix/virtual
      
[1] Главный почтовый домен

[2] Список всех почтовых доменов, за исключением главного

Для получения дополнительной информации, обратитесь к /usr/local/etc/postfix/dist/main.cf.

Перезапустим Postfix с новым файлом конфигурации:
      
      # postfix reload
      
В дополнение к списку пользователей, описанных в SASL и Cyrus, необходимо добавить их и в Postfix. Делается это с помощью файла /usr/local/etc/postfix/virtual, куда мы добавляем пользователей в таком формате:
      
      user@domain user@domain
      
Для того, чтобы получать почту, аресованную несуществующему пользователю, добавьте следущую строку:
      
      @domain1 valid_user@domain1
      
Знайте, что такое действие завалит ящик всем тем спамом, который рассылается методом перебора имен. В тоже время, это упростит получение почты для стандартных имен, таких как postmaster.

После каждого изменения этого файла необходимо выполнять такую конманду:
      
      #postmap /usr/local/etc/postfix/virtual
      

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

Вся проверка заключается в том, что необходимо попробовать подключиться к серверу с помошью почтового клиента, поддерживающего IMAP, используя имя тестового пользователя.

Если такого клиента у вас нет, то можно установить, например, Cone, работающего из командной строки.

Если вы успешно соединились и на вашем сервере DNS есть соответствующая MX запись, то пожете попробовать отправить себе письмо с любой другой почтовой системы.
 
 
Автор: Francisco Reyes, Перевод: Сгибнев Михаил, http://dreamcatcher.ru
Категория: Mail | Добавил: oleg (16.11.2007)
Просмотров: 1255 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024