Deus
YouTube ¦ Статьи ¦ Обзоры игр ¦ Ссылки ¦ Архив файлов

Статьи
  1. Deus stat - скрипт сбора статистики по трафику
  2. Установка сервера Apache на FreeBSD
  3. Как создать сервер Team Fortress 2
  4. Как создать сервер Counter-Strike:Source
  5. Русификация Slackware 11.0
  6. Установка Postfix c Cyrus IMAP
  7. NAT на базе natd/ipfw во FreeBSD
  8. NAT на базе iptables в Linux
  9. Как установить Linux через PXE
  10. Создание своего rpm
  11. Консоль через COM-порт для FreeBSD
  12. Как смонтировать usb-flash в качестве swap
  13. АТС NEC NEAX 2000 IPS
  14. Семейство протоколов TCP/IP
  15. Сетевые технологии
  16. Как отсортировать IP-адреса в Excel’e
  17. Сканер Mustek Bear Paw 1200CU Plus в Linux
  18. Схема электроразводки популярных гитар
  19. Микрофонный предусилитель
  20. Как подключить электрогитару к компьютеру
  21. Мои гитары
  22. Баллада о ZooM’e
Обзоры игр
  1. Портативная игростанция (PSP). Продолжение
  2. Тишина нарушена. Обзор серии Silent Hill
  3. Портативная игростанция (PSP)
  4. Speccy навсегда
Ссылки
  1. Различные ресурсы Интернет
  2. Мои работы
Файлы
  1. Архив файлов

    

Установка почтового сервера Postfix c Cyrus IMAP

Здесь приведен один из рецептов построения почтового сервера на базе Postfix.

Перед его использованием, рекомендую прочитать о том, что такое вообще электронная почта.

Почтовая система в этом примере ориентирована на небольшое количество клиентов, примерно до 300 ящиков. Впрочем, данную систему можно доработать введением различных почтовых фильтров "милтеров" (Spamassassin, ClamAV, GrayList), добавлением веб-интерфейса (Ilohamail) для пользователей и администратора. В итоге эффективность такого решения можно повысить до 2000 почтовых ящиков.

Как вы уже поняли, в качестве SMTP сервера здесь используется Postfix.
В качестве POP3 / IMAP4 сервера используется Cyrus IMAP.
Информация о почтовых ящиках хранится в MySQL.
Для авторизации используется библиотека из API Cyrus SASL.

Установка производилась на Linux Slackware 10.2. Предполагается, что MySQL уже установлен с префиксом /usr.

В этом примере почтовый сервер обслуживает домен deus.ru, все почтовые ящики имеют вид - name@deus.ru.

Заведение специальных пользователей

Перед установкой нужно добавить в систему (см. adduser) следующих пользователей:

postfix
cyrus

И следующие группы (см. groupadd):

postfix
postdrop
cyrus

Cyrus SASL 2.1.21

Устанавливаем c использованием команд:

# ./configure --prefix=/usr --enable-plain --enable-login --enable-sql --with-plugindir=/usr/lib/sasl2 --with-mysql=/usr
# make
# make install

Cyrus IMAP 2.2.12

Устанавливаем c использованием команд:

# ./configure --prefix=/usr --with-cyrus-user=cyrus --with-cyrus-group=cyrus --with-sasl=/usr/lib/sasl2 --without-bdb
# make
# make install

Мой конфиг /etc/imapd.conf:

admins: admin
allowallsubscribe: 0
allowanonymouslogin: 0
allowapop: 1
allownewnews: 0
allowplaintext: 1
allowusermoves: 0
altnamespace: 0
annotation_db: skiplist
autocreatequota: 0
client_timeout: 10
configdirectory: /var/imap
defaultacl: admin password
defaultdomain: deus.ru
duplicate_db: skiplist
partition-default: /var/spool/imap
ptscache_db: skiplist
deleteright: c
foolstupidclients: 0
seenstate_db: skiplist
subscription_db: skiplist
tlscache_db: skiplist
implicit_owner_rights: lca
lmtp_downcase_rcpt: 1
lmtp_over_quota_perm_failure: 1
loginuseacl: 0
logtimestamps: 1
maxmessagesize: 0
mboxlist_db: skiplist
plaintextloginpause: 1
poptimeout: 10
popuseacl: 0
postmaster: postmaster
quota_db: skiplist
quotawarn: 95
reject8bit: 0
servername: deus.ru
virtdomains: off
# Далее - как и куда будет авторизовать пользователей Cyrus SASL
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_mech_list: plain login
sasl_sql_user: mail
sasl_sql_passwd: password
sasl_sql_database: mail
sasl_sql_hostnames: localhost
sasl_sql_select: SELECT password FROM users WHERE uname = LOWER(’%u@%r’) AND enable = 1
sasl_log_level: 255

После установки необходимо создать две директории, принадлежащие пользователю cyrus:

/var/imap
/var/spool/imap

Затем, перейдя командой su cyrus под пользователя cyrus, запустить скрипт из исходников:

$ tools/mkimap

который создаст структуру папок внутри /var/imap. Но структура будет пустой, без ящков. Для создания конкретных ящиков пользуйтесь интерактивной утилитой cyradm из комплекта cyrus.

Postfix 2.2.9

Устанавливаем c использованием команд:

# make -f Makefile.init makefiles \
’CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl’ \
’AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2’
# make
# make install

Мой конфиг /etc/postfix/master.cf:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = mail.deus.ru
mydomain = deus.ru
myorigin = $mydomain
mydestination = $myhostname, localhost, $mydomain
# Инфа о ящиках здесь берется из MySQL
virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual-mailbox-map.cf
unknown_local_recipient_reject_code = 550
mynetworks_style = subnet
# Сети, которым можно использовать мой smtp для relay
mynetworks = 192.168.1.0/24, 192.168.0.0/24, 127.0.0.0/8
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_application_name = smtpd
alias_maps = dbm:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
# Откуда брать альясы для ящиков
virtual_alias_maps=mysql:/etc/postfix/mysql/virtual-alias.cf
alias_database = dbm:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
# В качестве агента доставки используем cyrus imap
mailbox_transport = cyrus
virtual_transport = cyrus
fallback_transport = cyrus
# Это вид приветствия почтового сервера
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = no

В файле /etc/postfix/master.cf должна содержаться строка:

cyrus unix - n n - - pipe
   user=cyrus argv=/usr/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}

Для обращения к MySQL нужны следующие конфиги:

/etc/postfix/mysql/virtual-mailbox-map.cf:

user = mail
password = password
dbname = mail
table = users
select_field = uname
where_field = uname
additional_conditions = and enable = 1
hosts = localhost

/etc/postfix/mysql/virtual-alias.cf:

user = mail
password = password
dbname = mail
table = users
select_field = alias
where_field = uname
additional_conditions = and enable =1 and isnull(alias)=0
hosts = localhost

MySQL (версия 3 или 4)

Дамп базы "mail":

CREATE TABLE `users` (
`uid` int(32) NOT NULL auto_increment,
`uname` char(255) NOT NULL default ’’,
`password` char(255) NOT NULL default ’’,
`alias` char(255) default NULL,
`descr` char(255) default ’No Description’,
`enable` enum(’1’,’0’) default ’0’,
PRIMARY KEY (`uid`),
KEY `uname` (`uname`)
);

Данные (ящики admin@deus.ru и test@deus.ru):

INSERT INTO `users` VALUES (1, ’admin’, ’password’, NULL, ’Mail Admin’, ’1’);
INSERT INTO `users` VALUES (2, ’test’, ’test’, NULL, ’Just test’, ’1’);

Запуск и остановка

Для запуска почтовой системы нужно последовательно выполнить:

# /usr/local/bin/master -d
# /usr/sbin/postfix start

Для остановки:

# /usr/sbin/postfix stop
# killall master

Ваши предложения и замечания направляйте через обратную связь.

©Deus 17.03.2006

 




Opera!

Проект OpenNET

FreeBSD

Fedora Core 8


Посодействуй
ЯндексЯндекс. ДеньгиХочу такую же кнопку





[Главная] | [Я на YouTube] | [Статьи] | [Обзоры игр] | [Ссылки] | [Файлы] | [Обратная связь]
Этот сайт создан Deus'ом в марте - августе 2005 года.