Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  FreeBSD Mail Howto
  exim & dovecot
  exim & courier-imap
  squirrelmail
  exim + saslauthd + courier-imap
  postfix -> exim
  sendmail -> exim
  imapsync
  Postfix + LDAP
  maildrop & postfix
  DSPAM
  Exim + LDAP
  ISPmanager
  Backup MX
  exim + exchange
  exim + dovecot + win2003 AD
  RoundCube
  qmail-ldap + AD
  spamooborona
  exim&dovecot + fetchmail + SSL
  Postfix + DBMail
  Mailgraph
  smfsav
  Exim+PgSQL
  Postfix + Dovecot + Clamav + SpamAssasin + LDAP vs MYSQL
  Simplemail Admin
  MTA qmail full install
  OpenLDAP адресная книга
  POSTFIX Статистики
  Backup MX (exim)
  Exim + dovecot + PgSQL + web
  Exim+dovecot2+dspam
  Возможности Dovecot 2
  Dovecot2 configfiles RUS
  Почтовый сервер по шагам ч.1
  Почтовый сервер по шагам ч.2
  Почтовый сервер по шагам ч.3
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> почтовые системы —> exim & dovecot

Связка exim и dovecot с веб интерфейсом postfixadmin

Автор: lissyara.


    Началось всё с того, что подсказали мне MUA с богатыми возможностями, но абсолютно неоправданно забытый в нашей стране - dovecot. Что поразило сразу - конфиг в 36кб размером. Не у многих MTA такой большой конфиг. Для начала пробежался быренько по конфигу - что сразу порадовало - масса настроек, море комментов, и, в-частности, на глаза попалось решение давнишней моей проблемы - при работе по imap почему-то становились недоступны новые мессаги. Тут было объяснение и решение. Решил перевести весь конфиг. Заколебался, но перевёл. Кстати, узнал много полезного :)
   В итоге, по мере перевода конфига, родилась идея создания связки вынесенной в заголовок статьи, ибо лучшего MTA, чем exim - я не знаю. До кучи решил привернуть к этому админку от постфикса - postfixadmin, т.к. сам постфикс мне не очень нравится, хотя на одном из серверов он у меня до сих пор стоит, но вот его админка - самая лучшая из того, что я видел (каюсь, видел немного :) - но итога не меняет - из того, что видел - лучшая). Итого реально связка получается такая: exim+dovecot+postfixadmin. Её и будем ставить. Начнём с конца, ибо коммунисты не ищут лёгких путей! :)
   Конфигурация тестовой машины и виртуальных доменов. Машина эта, 2x500 P-III, с 512 мегами ECC памяти и двумя U160 SCSI дисками висящими на встроенном в маму контроллере (что, конечно же, косячно - ибо он всего 40Mb/s, но тем не менее 30-31 мег в секунду снять с них удаётся). Диски не в массиве, один разбит на разделы второй одним шматком монтировался в /usr.
   Ставим postfixadmin, предварительно обновив порты. Если MySQL, apache, PHP4 или что-то из модулей не стоит - всё это он притащит за собой. Опции - пожалуй всё по дефолту, тока при установке PHP посмотрите, стоит ли крестик на модуле для apache - а то последнее время, по дефолту, он снят - видимо пытаются всех перегнать на 5-й PHP, тока я вот смысла в этом не вижу - 4-й то ещё толком не знаю :).
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='postfixadmin'
Port:   postfixadmin-2.1.0_1
Path:   /usr/ports/mail/postfixadmin
Info:   PHP frontend to postfix and mySQL
Maint:  rob@debank.tv
B-deps:
R-deps: mysql-client-4.1.19 php4-4.4.2_2 php4-mysql-4.4.2_2
WWW:    http://www.high5.net/postfixadmin

/usr/ports/>make && make install && make clean

   Если у вас уже стояла связка apache+php+mysql то можете переходить к следующему абзацу. Если нет, то теперь надо определиться, на каком хосте будет стоять MySQL - на этом же, или на другом, ибо поставился только клиент, а не сервер. Если на этом то ставим из портов на нём, если на другом, то на другом. По дефолту клиент поставлся от MySQL 4.1, соответсвенно и сервер надо ставить такой же. Если хотите другой - то надо заранее поставить сервер с клиентом нужной версии и прописать в /etc/make.conf такую строку:
# пример для версии MySQL 5.0
DEFAULT_MYSQL_VER=50

Итак, ставим MySQL нужной версии:
/usr/home/lissyara/>cd /usr/ports/databases/mysql41-server/
/usr/ports/databases/mysql41-server/>make && make install && make clean
===>  Vulnerability check disabled, database not found

You may use the following build options:

      WITH_CHARSET=charset    Define the primary built-in charset (latin1).
      WITH_XCHARSET=list      Define other built-in charsets (may be 'all').
      WITH_COLLATION=collate  Define default collation (latin1_swedish_ci).
      WITH_OPENSSL=yes        Enable secure connections.
      WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library.
      WITH_PROC_SCOPE_PTH=yes Use process scope threads
                              (try it if you use libpthread).
      BUILD_OPTIMIZED=yes     Enable compiler optimizations
                              (use it if you need speed).
      BUILD_STATIC=yes        Build a static version of mysqld.
                              (use it if you need even more speed).
      WITHOUT_INNODB=yes      Disable support for InnoDB table handler.
      WITH_NDB=yes            Enable support for NDB Cluster.

Если есть необходимость в каких-то опциях, то их можно задать из командной строки, как аргументы запуска команд make и make install, но это не есть правильно, ибо при обновлении при помощи программы portupgrade это потеряется (сам влетел, собрал с кодировкой и коллатион cp1251, а после обновления клиента получил знаки вопроса вместо русских букв), правильно - добавить в файл /etс/make.conf примерно такую секцию:
PORTSDIR?=      /usr/ports
# для сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql41-server
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
.endif
# для клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql41-client
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
.endif

Ну и соответственно в ней добавить нужные опции сборки. После сборки меняем пассворд рута, добавляем нужного пользователя и создаём таблицы в БД по прилагаемым дампам (вообще можно создать родные от postfixadmin, по дампу идущему в комплекте с ним, но там юзер другой... мне это не понравилось :))
Итак, будем запускать всё это хозяйство:
/usr/home/lissyara/>echo 'apache_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/mysql-server start
Starting mysql.
/usr/home/lissyara/>/usr/local/etc/rc.d/apache.sh start
Starting apache.
/usr/home/lissyara/>

Вообще, рекомендую поставить phpMyAdmin из портов, будет чуть попроще с БД ковыряться. И создаём таблицы в БД по прилагаемому дампу:
-- 
-- БД: `exim`
-- 
USE mysql;
INSERT INTO `user` (`Host`, `User`, `Password`)
VALUES ('localhost','exim',password('exim'));
INSERT INTO `db` (`Host`, `Db`, `User`, `Select_priv`)
VALUES ('localhost','exim','exim','Y');
FLUSH PRIVILEGES;
GRANT USAGE ON exim.* TO exim@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON exim.* TO exim@localhost;
CREATE DATABASE `exim`;
USE `exim`;

-- --------------------------------------------------------

-- 
-- Структура таблицы `admin`
-- 

CREATE TABLE `admin` (
  `username` varchar(255) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Admins';

-- --------------------------------------------------------

-- 
-- Структура таблицы `alias`
-- 

CREATE TABLE `alias` (
  `address` varchar(255) NOT NULL default '',
  `goto` text NOT NULL,
  `domain` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`address`),
  KEY `address` (`address`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Aliases';

-- --------------------------------------------------------

-- 
-- Структура таблицы `domain`
-- 

CREATE TABLE `domain` (
  `domain` varchar(255) NOT NULL default '',
  `description` varchar(255) NOT NULL default '',
  `aliases` int(10) NOT NULL default '0',
  `mailboxes` int(10) NOT NULL default '0',
  `maxquota` int(10) NOT NULL default '0',
  `transport` varchar(255) default NULL,
  `backupmx` tinyint(1) NOT NULL default '0',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`domain`),
  KEY `domain` (`domain`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Domains';

-- --------------------------------------------------------

-- 
-- Структура таблицы `domain_admins`
-- 

CREATE TABLE `domain_admins` (
  `username` varchar(255) NOT NULL default '',
  `domain` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Domain Admins';

-- --------------------------------------------------------

-- 
-- Структура таблицы `log`
-- 

CREATE TABLE `log` (
  `timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `username` varchar(255) NOT NULL default '',
  `domain` varchar(255) NOT NULL default '',
  `action` varchar(255) NOT NULL default '',
  `data` varchar(255) NOT NULL default '',
  KEY `timestamp` (`timestamp`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Log';

-- --------------------------------------------------------

-- 
-- Структура таблицы `mailbox`
-- 

CREATE TABLE `mailbox` (
  `username` varchar(255) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `name` varchar(255) NOT NULL default '',
  `maildir` varchar(255) NOT NULL default '',
  `quota` int(10) NOT NULL default '0',
  `domain` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Mailboxes';

-- --------------------------------------------------------

-- 
-- Структура таблицы `vacation`
-- 

CREATE TABLE `vacation` (
  `email` varchar(255) NOT NULL default '',
  `subject` varchar(255) NOT NULL default '',
  `body` text NOT NULL,
  `cache` text NOT NULL,
  `domain` varchar(255) NOT NULL default '',
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`email`),
  KEY `email` (`email`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Vacation';

Вообще настройки самого postfixadmin - минимально отличаются от стандартных - пароль сделан в открытом виде, да и всё (в файле config.inc.php). Ему и недосуг что админит он вовсе и не постфикс :). Также советую запаролить его, с помощью .htaccess например... После создания БД, таблиц в ней, юзера можно ставить dovecot:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='dovecot'
Port:   dovecot-1.0.b8
Path:   /usr/ports/mail/dovecot
Info:   Secure and compact IMAP and POP3 servers
Maint:  robin@isometry.net
B-deps: libiconv-1.9.2_2
R-deps: libiconv-1.9.2_2
WWW:    http://www.dovecot.org/

/usr/ports/>cd /usr/ports/mail/dovecot
/usr/ports/mail/dovecot/>make && make install && make clean

Лезет синенькое окошко, где выбираем то, что нам нужно.
  Options for dovecot 1.0.b8
[ ] KQUEUE    kqueue(2) support
[ ] SASL2     SASL2 support
[ ] GSSAPI    GSSAPI support
[ ] VPOPMAIL  VPopMail support
[ ] LDAP      OpenLDAP support
[ ] PGSQL     PostgreSQL support
[X] MYSQL     MySQL support
[ ] SQLITE    SQLite support

После установки топаем рихтовать конфиг:
/usr/home/lissyara/>cd /usr/local/etc/
/usr/local/etc/>ll | grep dove
-r--r--r--  1 root  wheel  36601 24 май 13:55 dovecot-example.conf
/usr/local/etc/>cp dovecot-example.conf dovecot.conf

До такого состояния:
#!/bin/sh
# Конфиг dovecot. Начат 2006-05-26 в 16:15

# сразу предупреждаю - перевод дался реально очень тяжело,
# у автора своеобразная манера писать комменты, прям как у меня :)
# посему прошу неточности не в комментах к статье выкладывать, а 
# на форуме http://forum.lissyara.su/viewforum.php?f=8

# Директория где храняться данные на время выполнения
# (временная чтоль, тогда почему не /tmp?)
base_dir = /var/run/dovecot/

# Протоколы по которым обслужиаем клиентов:
#  imap imaps pop3 pop3s
protocols = imap pop3

# IP или имя хоста на котором будем слушать
# На данный момент не поддерживается задание нескольких адресов,
# единственный вариант - указать звёздочку (*) чтобы слушать все
# адреса ([::] - для IPv6)

# Для задания специфических портов для некоторых сервисов то это
# надо конфигурить в секции протоколов, примерно так:
#   protocol imap {
#     listen = *:10143
#     ssl_listen = *:10943
#     ..
#   }
#   protocol pop3 {
#     listen = *:10100
#     ..
#   }
listen = *

# IP или имя хоста где ждём подключения по SSL.
# По дефолту - не задано.
#ssl_listen =

# Отключить поддержку SSL/TLS (yes/no - соответсвенно включено/отключено).
ssl_disable = yes

# PEM кодированый X.509 SSL/TLS сертификат и секретный ключ. Они открываются
# до понижения рутовых привилегий, поэтому сохраните ключевой файл
# с доступом тока для root. Включенный скрипт doc/mkcert.sh может быть
# использован для генерации самоподписанного сертификата, тока не
# забудте обновить домены в dovecot-openssl.cnf
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem

# Если ключевой файл защищён паролем, то его надо написать тут. Как
# альтернатива - запуск dovecot с параметром '-p'.
#ssl_key_password =

# Файл содержащий авторити (центры подписывающие сертификаты). обычно не нужен.
#ssl_ca_file =

# Запрос клиента на посыл (?) сертификата.
#ssl_verify_client_cert = no

# Как часто регенерить файл с параметрами SSL. Это весьма нагружающий CPU
# процесс. Значение - в часах, 0 отключает регенерацию файла вообще.
#ssl_parameters_regenerate = 168

# Цифры используемые в SSL
#ssl_cipher_list = ALL:!LOW

# Отключить команду LOGIN и все другие plaintext аутентификации если
# SSL/TLS не используется. (совместимо с LOGINDISABLED). Отметтьте, что
# 127.*.*.* и IPv6 ::1 адреса считаются безопасными, и установки этого пункта
#  не влияют на соединение с них.
disable_plaintext_auth = no


# Убивать все IMAP и POP3 процессы при остановке главного процесса dovecot
# Если поставить "no" то можно обновлять (видимо - реконфигурить) dovecot
# без принудительного закрытия открытых клиентских подключений (может быть
# проблемой - если обновление из-за безопасности).
# Надо учесть, что после того как убит мастер-процесс, клиентские процессы
# не могут писать в лог (так что, происходящее, останется неизвестным).
shutdown_clients = yes

# Использовать указанный тут файл вместо syslog(). Может быть заюзан 
# /dev/stderr для логгинга. (Только /dev/stderr!)
#log_path = 

# Для информационных сообщений юзайте этот файл, вместо дефолтового
#info_log_path = 

# Префикс для каждой линии записываемой в syslog. Коды % прредставлены
# в формате strftime(3).
log_timestamp = "%b %d %H:%M:%S "

# Средства (немогу подобрать адекватный перевод для слова "facility", в
# таких фразах) syslog используемые при ведении логов через syslog.
# Если по каким-то причинам не хочется использовать стандартное "mail",
# можно использовать local0...local7.
syslog_facility = mail

## Секция "Про лОгины" :)
## 

# Директория где аутентификационный процесс размещает UNIX сокеты
# которые требуются для процесса логина. Сокеты создаются от суперпользователя,
# поэтому можно не беспокоится насчёт прав. При старте dovecot всё
# содержимое этой директории удаляется.
login_dir = /var/run/dovecot/login

# `chroot`ить процесс аутентификации и авторизации в login_dir.
# Очень неплохая идея - ибо этот процесс работает от рута.
# http://wiki.dovecot.org/Rootless
login_chroot = yes

# Юзер использующийся для процесса логина. При установке из
# портов создаётся новый юзер - dovecot, причём не создав его не
# хочет ставиться. Ненавижу такие инсталляторы и людей их пишуших.
# В конце-концов мне видней нужен ли мне такой юзер и какого я буду
# использовать для этого процесса.
# Этому юзеру не нужен доступ к почте, он занимается тока
# контролем доступа к авторизации пользователя.
# http://wiki.dovecot.org/UserIds
login_user = dovecot

# Максимальный размер процесса, в мегабайтах. Если Вы не используете
# login_process_per_connection, то вероятно необходимо увеличить
# это значение.
login_process_size = 64

# Каждый логин должен быть обработан своим собственным процессом ('yes'), 
# или один процесс может обрабатывать несколько соединений ('no'). 'yes'
# более
# секьюрно, особенно если включено SSL/TLS. 'no' быстрее работает, ибо нет
# необходимости создавать процесс на каждое соединение.
login_process_per_connection = yes

# Число запускаемых процессов логина. Если 'login_process_per_connection'
# равно 'yes', то это число свободных процессов ожидающих подключения
# пользователей.
login_processes_count = 3

# Максимальное число запускаемых процессов авторизации. Точное число процессов
# обычно находится в 'login_processes_count', но когда много юзеров
# одновременно
# запускают процесс авторизации может быть запущено больше процессов. Для
# предотвращения 'fork-bombing' проверка производится раз в секунду,
# необходимо ли создать новые процессы - если все используются, то их число
# удваивается, до тех пор, пока не будет достигнут предел указанный тут.
# Эта опция работает только в случае если 'login_process_per_use' = 'yes'.
login_max_processes_count = 64

# Максимальное число соединений разрешённых в сосоянии 'логина'. Когда
# достигается указанный тут лимит, самые старые связи разрываются. Если
# 'login_process_per_connection' = 'no', то это число соединений процесса,
# таким образом максимальное число одновременно залогиненых юзеров равно
# 'login_processes_count' * 'max_logging_users'.
login_max_logging_users = 128

# Приветственное сообщение для клиентов.
login_greeting = dovecot MUA ready

# Разделённый пробелами лист элементов, которые будут записаны в лог. Непустые
# элементы будут объединены через запятую.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c

# Формат лога аутентификации. %$ содержит цепочку login_log_format_elements,
# %s содержит данные которые будут залогированы.
login_log_format = %$: %s

## Процесс почты
## (настройки раздачи почты клиентам)

# Максимальное число запущенных mail процессов. Когда этот лимит достигнут,
# новые юзеры обламываются :)
#max_mail_processes = 1024

# Показывать больше отладочной информации (заголвков процессов?). В настоящее
# время показывается имя пользователя и IP адрес. Это может быть полезно
# для того, чтобы увидеть кто фактически использует процессы IMAP
# (общие майлбоксы, или если один uid используется несколькими аккаунтами).
verbose_proctitle = yes

# Показывать уровень протокола ошибок SSL.
#verbose_ssl = no

# Действительный диапазон UID для пользователей, дефолт от 500 и выше. Это
# необходимо для того, чтобы пользователи не смогли залогиниться как
# демоны или какие-либо системные пользователи. Запрет для логина `root`а
# жёстко забит в код `dovecot`а и не может быть разрешён даже если
# установить 'first_valid_uid' = 0.
first_valid_uid = 25
#last_valid_uid = 0

# Диапазон GID для юзеров, по дефолту не root или wheel. Юзерам имеющим
# недействительный GID как ID первичной группы вход запрёщён. Если пользователь
# входит в дополнительную группу с недействительным GID то эти группы
# не заданы (непонимаю эту фразу... Либо разрешено либо запрещено... х.з.)
first_valid_gid = 0
#last_valid_gid = 0

# Разрешить доступ для для дополнительных групп процессов обработки почты.
# Обычно, разрешается группа "mail" для доступа к /var/mail чтобы
# создавать блокировки
mail_extra_groups = mail

# Список директорий, с разделителями вида ':', в которых разрешается
#`chroot`инг для процессов обpаботки почты (т.е. /var/mail разрешает
# за`chroot`ить, до кучи, и /var/mail/foo/bar).
# Эти установки не затрагивают 'login_chroot' или 'auth_chroot' переменные.
# АХТУНГ: никогда не добавляйте директории где локальные пользователи
# имеют право что-то менять, иначе могут подсунуть эксплоит и получить рута.
# Обычно так делается если пользователи не имеют шелл-доступа.
#valid_chroot_dirs = 

# Дефолтовая `chroot` директория для процесса обработки почты. Это
# может быть перекрыто настройками пользователя (из БД пользователей)
# давая /./ в домашней директории пользователя.
# (т.е. /home/./user chroot`ится в /home). Необходимо отметить что реальной
# необходимости чрутить пользователей нету - т.к. dovecot не разрешит юзерам
# получить доступ к файлам вне их домашней директории.
#mail_chroot = 

# Включить отладку для процесса обработки почты. Это может помочь понять,
# почему dovecot не может найти вашу почту (дословно переведено :))
#mail_debug = yes

# Переменные окуружения MAIL для использования в случаях, когда явно они
# не заданы. Если оставить их незаданными то dovecot попробует установить
# их автоматически (описано в doc/mail-storages.txt). Есть несколько
# специальных переменных которыми можно пользоваться:
#
#   %u - имя пользователя
#   %n - `юзерская` часть в user@domain, тоже самое что и %u
#         если имя домена не задано
#   %d - `доменная` часть в user@domain, пустая, если домен не задан
#   %h - домашняя директория
#
# Полный список этих переменных можно посмотреть в 
# /usr/local/share/doc/dovecot/doc/variables.txt
#
# Пара примеров:
#   default_mail_env = maildir:/var/mail/%1u/%u/Maildir
#   default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u
#   default_mail_env = mbox:/var/mail/%d/%n/:INDEX=/var/indexes/%d/%n
#   default_mail_env = mbox:/var/mail/%u
# Учтите, что формат этой директории должен совпадать с тем,
# который достанет exim из БД (что касается его формата в БД - это
# регулируется в конфиге postfixadmin), так что либо думаем, как указывать,
# либо юзаем переменную %h - хомяк.
# Мне? больше нравиться такой вариант:
#default_mail_env = maildir:/var/mail/exim/%d/%n
# А в postfixadmin по дефолту такой:
#default_mail_env = maildir:/var/mail/exim/%n@%d
# А можно и так (наверно даже правильней так, если прокатит - но я не
# попробовал - забыл, потому - это чистая теория:
#default_mail_env = maildir:/var/mail/exim/%h
# опция была заменена аналогичной по смыслу но с другим именем
# начиная с версии 1.1.1. теперь это будет так:
mail_location = maildir:/var/mail/exim/%d/%n

# Если хотите установить несколько местоположений почтового ящика
# (тока нах это надо?) или хотите изменить NAMESPACE (это расширение
# описано в RFC 2342, оно позволяет одноимённой командой определить,
# какие пространства имён задействованы на сервере),
# то это можно сделать в следующих секциях:
#
# Можно иметь частные, раздёлённые и публичные пространства имён.
# Единственное различие между ними то, как dovecot объявляет их клиенту.
# Разделённые namespaces предназначены для пользовательских почтовых
# ящиков разделённых с другими пользователями, а публичные пространства
# имён для более глобально доступных почтовых ящиков (мне тяжело даются
# эти определения, поскольку я привык что один ящик - один юзер).
#
# ПОМНИТЕ: Если добавляете какой-либо namespaces, то дефолтовый namespace
# должен быть явно добавлен. т.е. default_mail_env не делает ничего, если
# если не задан namespace без указания местоположения. Дефолтовый
# namespace представляет собой namespace с пустой приставкой.
#namespace private {
   # Разделитель (сепаратор) в иерархии директорий. Желательно
   # использовать одинаковый во всём пространстве namespaces, иначе
   # некоторых клиентов начинает плющщить. '/' - хороший выбор.
   #separator = /

   # Префикс требуемый для получения доступа к этому пространству имён.
   # Должно быть разным во всех namespaces. Например "Public/".
   #prefix = 

   # Физическое расположение почтового ящика. Формат точно такой же как у
   # 'default_mail_env', являющейся дефолтовой для него.
   #location =

   # Может быть тока один INBOX, и тут определяется какой.
   #inbox = yes

   # Если namespace скрыто, это не показывается клиентам через NAMESPACE
   # и не показывается в ответах списка (LIST). Это полезно при
   # конвертировании с другого сервера с другим namespaces который
   # убрать (?) но всё ещё работаете с ним. Например, вы можете создать
   # скрытый namespaces с префиксом "~/mail/", "~%u/mail/" и "mail/".
   #hidden = yes
#}

# Лист полей, разделённых пробелами для первоначального сохранения
# в файл кэша. На данный момент разрешены следующие поля:
#
#  flags, date.sent, date.received, size.virtual, size.physical
#  mime.parts, imap.body, imap.bodystructure
#
# Разные IMAP-клиенты работают по разному, и извлекают выгоду из различных
# кэшируемых областей. Некоторые клиенты не умеют ими пользоваться вообще.
# Излишнее кэширование приводит к бесполезным операциям дискового
# ввода-вывода.
#
# Dovecot пытается автоматически выяснить что хочет клиент и сохраняет
# тока это. Однако первые несколько заходов клиента ещё не известно чё
# клиент хочет, и кэширование не оптимально. Если известны потребности
# клиентов, то можно попробовать выставить эти поля вручную. Если
# клиенты, фактически, не будут их использовать, то в итоге Dovecot 
# удалит их.
#
# Вообще, лучше тут ничё не трогать. Ибо то, на чём можно выиграть,
# обычно, непримечательно, и думаешь на это в последнюю очередь.
#mail_cache_fields = 

# Разделённый пробелами список полей которые Dovecot никогда не должен
# сохранять в кэше. Пригодится в случае если надо съэкономить место
# на диске в ущерб скорости работы.
#mail_never_cache_fields = 

# Минимальное число почтовых сообщений в ящике до обновления кэш-файла
# Позволяет оптимизировать поведение Dovecot в работе с диском, засчёт
# уменьшения операций записи, но увеличения числа операций чтения.
#mail_cache_min_mail_count = 0

# Когда выполняется команда IDLE, почтовый ящик проверяется время от
# времени, чтобы обнаружить новые письма, или ещё какие изменения.
# Эта опция отвечает за минимальное время между проверками. Однако
# Dovecot может использовать `dnotify` и `inotify` в линухах чтобы
# ответить немедленно после изменения.
#mailbox_idle_check_interval = 30

# Разрешить клиентам полный доступ к файловой системе. В этом случае,
# не выполняется никаких проверок доступа, тока штатные проверки ОС
# UID/GID пользователя который работает. Это работает и с майлбокс и с
# майлдир, разрешая использовать в названиях почтовых ящиков полные пути,
# типа '/path/to/mbox/' или '~user/'. (Нах, такое щассье...)
#mail_full_filesystem_access = no

# Максимальная разрешённая длинна для 'mail keyword name'
# (Директории, чтоль?)
# Проверяется тока при создении нового (нвой директории? надо проверить.)
#mail_max_keyword_length = 50

# Сохранять почту с CR+LF вместо LF (добавляется перевод каретки). Это
# уменьшает загрузку CPU при отдаче почты клиентам, но немного увеличиват
# размер размеры файлов, и соответственно дисковый ввод-вывод (При большом
# объёме почты цифра может оказаться достаточно существенной). Также,
# если другие программы шаряться по почтовым ящикам, то могут быть
# проблемы c неверной обработкой дополнительного CRs.
#mail_save_crlf = no

# Использовать mmap() вместо read() для чтения почтовых файлов. read()
# вродебы немного быстрей работает под Linux/x86 и лучше для NFS, поэтому
# так и стоит по дефолту. Необходимо заметить, что OpenBSD 3.3 и более
# старые не работают напрямую с mail_read_mmaped = yes.
#mail_read_mmaped = no

# Не использовать mmap() вообще. Такое требуется в случае, если индексы
# хранятся на расшаренной файловой системе (NFS или ещё какая).
#mmap_disable = no

# Не write() в mmaped файлы. Бывает необходимо для операционных систем
# которые используют для них свой кэш, например OpenBSD.
#mmap_no_write = no

# Метод блокировки индексных файлов. Альтернативы fcntl, flock и dotlock.
# Dotlocking юзает трюки, которые могут привети к большему дисковому
# вводу/выводу чем другие методы блокировки. Заметтьте, если юзаете NFS
# не забудте также изменить и значение mmap_disable setting!
#lock_method = fcntl

# По дефолту команда LIST возвращает все записи в maildir начинающиеся
# с точки. Включение этой опции заставляет dovecot возвращять тока
# директории. Это делает stat() для каждого вхождения, и вызывает больше
# дискового ввода-вывода.
# (Для систем устанавливающих dirent->d_type, эта опция свободна и так
# всегда, независимо от того, что тут установлено.)
#maildir_stat_dirs = no

# Копировать почту в другие директории используя "жёсткие ссылки". Это
# намного быстрее чем реальное копирование файла. Это проблематично
# лишь в случае, если что-то (программа, например, какая-то) изменяет
# файлы в одной директории, но необходимо чтобы во всех других они
# они остались неизменными. На данный момент неизвестен MUA, который
# изменял бы файлы непосредственно. Протокол IMAP также требует чтобы
# файлы не изменялись.
# Если нужен прирост производительности - включите эту опцию.
#maildir_copy_with_hardlinks = no

# Какой метод блокировки почтового ящика использовать. Доступны четыре вида
# блокировок:
#  dotlock: создаётся <mailbox>.lock файл. Это самый старый и самый
#           безопасный метод для NFS. Если хотите использовать
#           директорию /var/mail/ то надо дать юзерам доступ
#           к этой директории.
#  fcntl  : Используйте это, по возможности. Работает и с NFS если
#           используется демон lockd.
#  flock  : Возможно существует не во всех системах. не работает с NFS.
#  lockf  : Возможно существует не во всех системах. не работает с NFS.
#
# Вы можете использовать неодин метод блокировки; если так и делаете,
# то надо их тут объявить, и избежать тупиковой ситуации (deadlocks),
# если несколько методов блокировки использует и другой MTAs/MUAs.
# Некоторые ОС не позволяют одновременное использование некоторых блокировок.
#mbox_read_locks = fcntl
#mbox_write_locks = dotlock fcntl

# Максимальное время ожидания блокировки перед прерыванием (отменой).
#mbox_lock_timeout = 300

# Если существует `dotlock` (блокировчный файл) но майлбокс никогда
# не модифицировлся, удалять блокировку через указанное время
#mbox_dotlock_change_timeout = 120

# Когда майлбокс неожиданно изменяется, то его необходимо полностью
# прочитать, чтобы найти все изменения. Если майлбокс большой, то на это
# может уйти много времени. Ввиду того, что чаще всего изменения - это
# новая почта, то быстрей всего было бы прочитать тока новые мессаги.
# Если разрешена эта опция ('yes') то dovecot так и делает, если что
# перечитывая весь mbox-файл, если происходит что-то неожиданное.
# Единственная причина поставить 'no' - если другой MUA меняет флаги
# сообщений и dovecot не заметит этого сразу.
# Отметтьте, что полная синхронизация сделана на команды:
# SELECT, EXAMINE, EXPUNGE и CHECK 
#mbox_dirty_syncs = yes

# Похоже на предыдущую опцию - mbox_dirty_syncs, но при установке полная
# синхронизация не делается даже по командам SELECT, EXAMINE,
# EXPUNGE или CHECK. Если эта опция установлена, то значение
# предыдущей - mbox_dirty_syncs - игнорируется.
#mbox_very_dirty_syncs = no

# Задержка записи хеадеров майлбокса до полной синхронизации записей
# (команды EXPUNGE and CHECK когда закрывается майлбокс). Особенно
# полезно для POP3, - там клиенты часто удаляют всю почту. Обратная
# сторона медали - это то, что изменения не сразу видны другому MUA.
#mbox_lazy_writes = yes

# Если размер майлбокса меньше, чем указанное тут значение (kB), не
# создавать индексные файлы. Если файл индекса существует, то он
# продолжает читаться но не обновляется (тока какой тогда смысл?)
#mbox_min_index_size = 0

# Максимальный размер файла dbox (в kB) с которым работает ротации.
#dbox_rotate_size = 2048

# Минимальный размер файла dbox (в kB) до ротации
# (перекрывается dbox_rotate_days)
#dbox_rotate_min_size = 16

# Максимальный возраст dbox файла в днях до ротации. День всегда начинается
# с полуночи, т.о. 1 = сегодня, 2 = вчера, и т.д. 0 = нет проверок.
#dbox_rotate_days = 0

# umask (маска считается из этого числа - вычитается оно из максимума 777,
# результат - и есть маска для файла) для файлов почты и директорий.
umask = 0077

# Удалить все привилегии перед выполнением процесса обработки почты.
# Это, в основном, предназначено для отладки, в противном случае вы не
# получите core dumps. Есть небольшой риск безопасности при использовании
# единственного UID для нескольких пользователей, поскольку они могли бы
# ptrace() процессы других пользователей.
#mail_drop_priv_before_exec = no

# Установить максимальный размер процесса (в Mb). Большинство памяти
# уходит на mmap()ing файлов, таким образом не должно быть проблем, даже
# если установить это число достаточно большим.
#mail_process_size = 256

# Префикс логов для майл-процессов. Смотрите полный лист переменных
# в файле doc/variables.txt 
#mail_log_prefix = "%Us(%u): "

## Специфисеские настройки IMAP
##

protocol imap {
  # Местоположение исполняемого файла авторизации.
  #login_executable = /usr/local/libexec/dovecot/imap-login

  # Местоположение исполняемого файла IMAP. Изменение этого позволит
  # выполнить другие программы до запуска процесса imap.
  #
  # Это записало бы сырые логи (rawlogs) в ~/dovecot.rawlog/ директорию:
  #   mail_executable = /usr/local/libexec/dovecot/rawlog \
  # /usr/local/libexec/dovecot/imap
  #
  # Это добавило бы gdb в процесс imap и писало бы обратную трассировку
  # в файлы /tmp/gdbhelper.*
  #   mail_executable = /usr/local/libexec/dovecot/gdbhelper \
  # /usr/local/libexec/dovecot/imap
  #
  #mail_executable = /usr/local/libexec/dovecot/imap

  # Максимальная длинна команды (командной линии) IMAP, в байтах. Некоторые
  # клиенты генерят очень длинные команды при работе с большими 
  # почтовыми ящиками. Если в ответе сервера Вы получите
  # "Too long argument" или "IMAP command line too large" то это
  # это значение необходимо будет увеличить.
  #imap_max_line_length = 65536

  # Поддержка динамически загружаемых плагинов. mail_plugins - список
  # плугинов разделённый пробелами
#  mail_plugins = quota trash
#  mail_plugin_dir = /usr/local/lib/dovecot

  # Посылать возможности IMAP в приветственном сообщении. Это избавляет
  # клиентов от необходимости запрашивать это в команде CAPABILITY, таким
  # образом экономится один запрос. Однако многие клиенты не понимают этого,
  # и всё равно делают запрос CAPABILITY всегда.
  #login_greeting_capability = no

  # Обработка клиентских ошибок:
  #   delay-newmail:
  #     Посылать EXISTS/RECENT уведомления о новой почте только в качестве
  #     ответа на NOOP и CHECK команды. Некоторые почтовые клиенты 
  #     игнорирубт их, например OSX Mail. Outlook Express вообще плющит,
  #     и он может быть сообщение об ошибке "Message no longer in server".
  #     Заметтьте, что шестой оутглюк (OE6) всё ещё выдаёт ошибку если 
  #     синхронизация стоит "Headers Only" (тока заголовки).
  #   outlook-idle:
  #     Outlook и Outlook Express никогда не прерывают команду IDLE, и если
  #     почты небыло полчаса Dovecot закрывает соединение. В общем, это
  #     правильно, но оутглюк не восстанавливает соединение самостоятельно,
  #     и в итоге не видно - пришла ли новая почта.
  #   netscape-eoh:
  #     Netscape 4.x вылетает если заколовки сообщения не заканчиваются
  #     пустой линией "end of headers". Обычно, она есть во всех сообщениях,
  #     но тем не менее производится проверка, и линия добавляется, если
  #     её нету. Это сделано только для команды FETCH BODY[HEADER.FIELDS..]
  #     Кстати, согласно RFC этого делать не надо :)
  #   tb-extra-mailbox-sep:
  #     При типе хранилища 'mbox' (майлбокс), почтовый ящик может содержать
  #     либо почту, либо субмайлбоксы (подпапки, короче) - но не то и
  #     другое одновременно. Thunderbird разделяет их, вынуждая сервер
  #     принять '/' в имени майлбокса за название почтового ящика.
  # Лист, разделённый пробелами. (не забудте убрать перевод строки,
  # экранированный '/' - dovecot его не поймёт... а жаль...)
  imap_client_workarounds = delay-newmail outlook-idle \
                             netscape-eoh tb-extra-mailbox-sep
}

## Специфические настройки POP3
##

protocol pop3 {
  # Местоположение исполняемого файла pop3-авторизации.
  #login_executable = /usr/local/libexec/dovecot/pop3-login

  # Местоположение исполняемого файла POP3.
  #mail_executable = /usr/local/libexec/dovecot/pop3

  # Не пробовать выявить сообщения, старые или просмотренные при
  # помощи POP3 сессий. Это нужно чтобы уменьшить дисковый ввод/вывод.
  # При работе с 'maildir' это не перемещает файлы из 'new/' в 'cur/'
  # c 'mbox' не пишутся статусные заголовки.
  #pop3_no_flag_updates = no

  # Поддержка команды LAST с существующими старыми POP3 спеками, но
  # удалёной в новых сборках. Некоторые клиенты всё ещё используют это.
  # Включение этой опции заставляет команду RSET очистить все '\Seen'
  # флаги сообщений.
  #pop3_enable_last = no

  # Если почтовое сообщение имеет хеадер 'X-UIDL', то использовать
  # его в качестве почтового 'UIDL'.
  #pop3_reuse_xuidl = no

  # Оставлять почтовый ящик залоченым во время POP3 сессии.
  #pop3_lock_session = no

  # Используемый формат POP3 UIDL. Можно использовать следующие переменные:
  #
  #  %v - Mailbox UIDVALIDITY
  #  %u - Mail UID
  #  %m - Сумма MD5 для всех заголовков почтового ящика в hex (тока для mbox)
  #  %f - filename (maildir only)
  #
  # Для совместимости UIDL с другими POP3 серверами, используйте:
  #  UW's ipop3d         : %08Xv%08Xu
  #  Courier version 0   : %f
  #  Courier version 1   : %u
  #  Courier version 2   : %v-%u
  #  Cyrus (<= 2.1.3)    : %u
  #  Cyrus (>= 2.1.4)    : %v.%u
  #  Older Dovecots      : %v.%u
  #
  # Отметьте, что у Outlook 2003 проблемы с форматом %v.%u который
  # являлся дефолтовым форматом Dovecot, так что при пересборке лучше это
  # учесть. %08Xu%08Xv - надо предварительно сохранить.
  #
  # Отметтьте, в настоящее время это должно быть установлено явно, т.к.
  # прежния установки по-умолчанию были не самыми лучшими, но и изменить
  # их было нельзя, не переустанавливая приложение.
  # Во всех новых инсталляциях будет %08Xu%08Xv
  #
  pop3_uidl_format = %08Xu%08Xv

  # POP3 формат строки логоута:
  #  %t - число TOP команд
  #  %p - число байт посланных клиенту в результате команды TOP
  #  %r - число команд RETR
  #  %b - число байт посланных клиенту в результате команды RETR
  #  %d - число удалённых сообщений
  #  %m - число сообщений (до удаления)
  #  %s - размер майлбокса в мегабайтах (до удаления (сообщений, видимо :)))
  #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s

  # Поддержка динамически загружаемых плагинов. mail_plugins - список
  # плагинов для загрузки, разделённый пробелами
  #mail_plugins = 
  #mail_plugin_dir = /usr/local/lib/dovecot/pop3

  # Обработка некоторых клиентских ошибок:
  #   outlook-no-nuls:
  #     Outlook и Outlook Express зависают, если сообщение содержит NUL
  #     символы. Эта установка заменяет их на символы 0x80.
  #   oe-ns-eoh:
  #     Outlook Express и Netscape Mail прерываются, если потеряна линия
  #     конца заголоков. эта опция шлёт её, если она потеряна.
  # Список, разделённый пробелами.
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}


# своя доставка dovecot - delivery
protocol lda {
  # Куда слать письма про превышение квоты
  postmaster_address = support@lissyara.su

  # путь к сокету
  auth_socket_path = /var/run/dovecot/auth-master
}


##
## Процессы аутентификации
##

# Расположение исполняемого файла
#auth_executable = /usr/local/libexec/dovecot/dovecot-auth

# Установить максимальный размер процесса, в мегабайтах.
#auth_process_size = 256

# Кэш аутентификации, в килобайтах. 0 - отключено.
# Заметтьте, что bsdauth, PAM и vpopmail требуют чтобы cache_key был
# задан для использования кэширования. Также надо заметить, что сейчас
# кэш авторизации не очень хорошо пашет, если используется много 
# passdbs (баз данных паролей?) с теми же самыми (одинаковыми?) именами в них.
#auth_cache_size = 0
# Время жизни, в секундах, для кэшированных данных. По истечании этого
# времени записи из кэша не используются, как исключение - если тока
# БД вернёт внутреннюю ошибку.
#auth_cache_ttl = 3600

# Разделённый пробелами лист элементов идентификаторов аутентификационных
# механизмов SASL, которые необходимы (я сам эту фразу нифига не понял :))).
# Можно оставить пустым, если нет необходимости в поддержке нескольких
# идентификаторов. Многие клиенты используют лишь первый, из перечисленных
# тут, поэтому ставьте дефолтовый первым.
#auth_realms =

# Дефолтовый realm/domain для использования если домен явно не задан. Это
# используется и для SASL и для добавления @domain к имени пользователя
# в плайнтекст логинах.
#auth_default_realm = 

# Список разрешённых символов в имени пользователя. Если в username содержатся
# неперечисленные тут символы, то авторизация автоматически будет неудачной.
# Это - просто дополнительная проверка того, что пользователь не сможет заюзать
# потенциальную брешь в защите, при работе с базами SQL/LDAP. Если хотите
# разрешить все символы, то оставьте это поле пустым.
#auth_username_chars = \
#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# Автозамена символов в имени пользователя, прежде чем по нему будет
# выполнен поиск в базе данных. Значение содержит ряд - что -> во что
# будет преобразовано. Например "#@/@" означает, что '#' и '/' будут
# преобразованы в '@'.
#auth_username_translation =

# Форматирование имени пользователя, до поиска по нему в БД. Тут можно
# использовать стандартные переменные, типа %Lu сделает все буквы маленькими,
# %n удалит домен, если он задан, или "%n-AT-%d" заменит '@' на "-AT-".
# Это делается после того, как auth_username_translation произвело изменения.
#auth_username_format =

# Если нужно разрешить вход главным пользователям (master users) по
# специфическому имени пользователя (master username) (т.е. не юзая
# поддержку SASL для этого) то вы можете определить символ радлелителя в
# этом пункте. Формат, в таком случае:<username><separator><master username>.
# UW-IMAP использует "*" в качестве разделителя, и это хороший выбор.
#auth_master_user_separator =

# Имя пользователя для логина при помощи механизма ANONYMOUS SASL
#auth_anonymous_username = anonymous

# Много отладочных логов. Полезго для определения, почему
# авторизация не пашет.
#auth_verbose = no

# Более подробный лог для отладки.
# Показываются квери к SQL.
#auth_debug = yes

# В случае несовпадения пароля записать пароль в лог, и используемую схему,
# таким образом проблема может быть отлажена. Регулируется auth_debug = yes.
#auth_debug_passwords = no

# Максимальное число работающих процессов авторизации. Они используются для
# выполнения блокирования passdb и userdb запростов (т.е. MySQL и PAM). 
# Они автоматически создаются и убиваются по мере надобности.
#auth_worker_max_count = 30

# Kerberos keytab для использования механизма GSSAPI. Будет использовать 
# системное значение по умолчанию (обычно, /etc/krb5.keytab) если не задано.
#auth_krb5_keytab = 

auth default {
  # Список требуемых механизмов аутентификации, разделённый пробелами
  #   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi
  mechanisms = plain

   # Добавлено для работы deliver от dovecot
   socket listen {
     master {
       path = /var/run/dovecot/auth-master
       mode = 0600
       user = mailnull
       #group = mail
     }
   }


  #
  # База данных паролей используемая для проверки пароля пользователя.
  # (и только для этого). Можно использовать несколько баз данных паролей
  # и пользователей. Это нужно, например, если используются одновременно и
  # системные пользователи (/etc/passwd) и виртуальные, чтобы не дублировать
  # системных в виртуальную БД.
  #
  # http://wiki.dovecot.org/Authentication
  #
  # Добавляя master=yes в passdb вы делаете passdb списком "master users",
  # кто может войти под чьим-либо ещё именем. Если не используется PAM,
  # вы, вероятно, хотите, чтобы юзер искался в passdb если она реально
  # существует. Это можно сделать, добавив pass=yes в главную passdb
  #
  # http://wiki.dovecot.org/MasterPassword

  # Юзеры могут быть временно заблокированы, если добавить БД паролей с
  # deny=yes. Если юзер будет найден в этой ДБ то аутентификация будет
  # неудачной.
  # Эта БД должна определяться до других, чтобы она была проверена первой.
  # Например:
  #passdb passwd-file {
    # Файл содержащий имена пользователей, по одному на строку:
    #args = /etc/dovecot.deny
    #deny = yes
  #}

  # PAM аутентификация. Предпочтена, сейчас, на большинстве систем. 
  # Отметтьте, что PAM может лишь проверить, верен ли пароль, но не может
  # использоваться в качестве userdb. Если вы не хотите использовать отдельную
  # пользовательскую БД (обычно passwd), вы можете использовать статическую
  # userdb.
  # ПОМНИТЕ: Вам нужен файл '/etc/pam.d/dovecot' созданном для PAM
  # аутентификации, чтобы это работало.
  #passdb pam {
    # [session=yes] [cache_key=<key>] [<service name>]
    #
    # session=yes делает Dovecot открытым(?) и немедленно закрывает сессию PAM.
    # Некоторые PAM плугины требуют этого для работы, например pam_mkhomedir.
    #
    # cache_key может использоваться для кэширования аутентификационных данных
    # PAM (auth_cache_size должен быть задан). По дефолту это не допускается,
    # потому как модули PAM могут сделать все проверки, кроме проверки пароля,
    # типа проверки IP адреса. Dovecot не может узнать об этих проверках без
    # посторонней помощи. cache_key - просто список переменных который
    # соответствует данным кэшируемым для использования.
    # Примеры:
    #   %u - Имя пользователя должно совпадать. Обычно достаточно только этого.
    #   %u%r - Имя пользователя и удалённый IP адрес должны совпадать.
    #   %u%s - Имя пользователя и сервис (т.е. IMAP, POP3) должны совпадать.
    # 
    # Если имя сервиса "*", используется имя сервиса для
    # обслуживания, например
    # pop3 или imap (/etc/pam.d/pop3, /etc/pam.d/imap).
    #
    # Примеры:
    #   args = session=yes *
    #   args = cache_key=%u dovecot
    #args = dovecot
  #}

  # /etc/passwd или similar, используется getpwnam()
  # В настоящее время, во многих системах, используется Name Service Switch,
  # сконфигуренное в /etc/nsswitch.conf.
  #passdb passwd {
  #}

  # /etc/passwd или similar, используется getpwnam(). Сейчас PAM.
  #passdb shadow {
  #}

  # BSD аутентификация. Используется, по крайней мере, в OpenBSD.
  #passdb bsdauth {
    # [cache_key=<key>] - Смотрите cache_key в PAM для понимания.
    #args =
  #}

  # passwd-подобный файл с указанным местоположением
  #passdb passwd-file {
    # путь к passwd-файлу
    #args = 
  #}

  # checkpassword исполняемая аутентификация
  # ОТМЕТЬТЕ: Вероятно, вы захотите использовать вместе с "userdb prefetch".
  #passdb checkpassword {
    # Путь к бинарнику checkpassword
    #args = 
  #}

  # SQL database
  passdb sql {
    # Путь к конфигурационному файлу SQL, велено смотреть дополнительную
    # инфу в файле doc/dovecot-sql.conf, тока такого файла нету :))) - не
    # инсталлится. В исходниках он есть. Там и смотрим.
    args = /usr/local/etc/dovecot-sql.conf
  }

  # LDAP database
  #passdb ldap {
    # путь для конфигурационного файла LDAP, примеры в  doc/dovecot-ldap.conf
    #args = 
  #}

  # vpopmail аутентификация
  #passdb vpopmail {
    # [cache_key=<key>] - Смотреть cache_key в PAM, для понимания.
    #args =
  #}

  #
  # БД пользователей, определяющая где расположена почта, и какие IDs
  # групп и пользователей имеют к ней доступ. Для single-UID
  # конфигурации используйте "static".
  #
  # http://wiki.dovecot.org/Authentication
  # http://wiki.dovecot.org/VirtualUsers
  #

  # /etc/passwd или similar, используется getpwnam().
  # В настоящее время, во многих системах, используется Name Service Switch,
  # сконфигуренное в /etc/nsswitch.conf.
  #userdb passwd {
  #}

  # passwd-подобный файл с указанием местоположения
  #userdb passwd-file {
    # путь к passwd-файлу
    #args =
  #}

  # Статические настройки, сгенерённые из шаблона
  #userdb static {
    # Шаблон для параметров настройки. CМожет вернуть что-то, что userdb
    # обычно возвращает, т.е.: uid, gid, home, mail, nice
    #
    # Пара примеров:
    #
    #  args = uid=500 gid=500 home=/var/mail/%u
    #  args = uid=500 gid=500 home=/home/%u mail=mbox:/home/%u/mail nice=10
    #
    #args =
  #}

  # SQL database
  userdb sql {
    # Путь к конфигурационному файлу SQL, велено смотреть дополнительную
    # инфу в файле doc/dovecot-sql.conf, тока такого файла нету :))) - не
    # инсталлится. В исходниках он есть. Там и смотрим.
    args = /usr/local/etc/dovecot-sql.conf
  }

  # LDAP database
  #userdb ldap {
    # путь для конфигурационного файла LDAP, примеры в  doc/dovecot-ldap.conf
    #args = 
  #}

  # vpopmail
  #userdb vpopmail {
  #}

  # "prefetch" (типа упреждающего чтения, чтоли :)) пользовательской БД,
  # что passdb уже достал всю необходимую информацию, и нет необходимости
  # делать ещё один поиск (запрос) в БД. Это работает и с SQL и с LDAP БД,
  # смотрите примеры их (для этих БД) конфигурационных файлов как это сделать.
  # http://wiki.dovecot.org/AuthSpecials
  #userdb prefetch {
  #}

  # Юзер от которого будет работать процесс. Этому юзеру нужен лишь доступ
  # к БД паролей. Только shadow и pam аутентификации реально нужны права рута,
  # работать, остальным можно подсунуть любого пользователя.
  # Заметтьте, что этому пользователю не нужен доступ к почте.
  # Этот юзер был задан выше (который по почте должен шариться :)).
  user = root

  # Директория где chroot`ится процесс. Многие аутентификации не работают,
  # если установить эту опцию, и вообще не имеет смысла это делать если для
  # аутентификации используется пользователь root.
  # Отметтьте, что valid_chroot_dirs не нужен для этой опции.
  #chroot = 

  # Число создаваемых аутентификационных процессов
  #count = 1

  # Требовать действительный клиентский SSL сертификат, или
  # аутентификация будет неудачной.
  #ssl_require_client_cert = no

  # Извлечь (взять) юзернэйм из клиентского SSL сертификата, ипользуя 
  # X509_NAME_oneline() который использует тему Distinguished Name.
  #ssl_username_from_cert = no
}

# Возможно экспортировать интерфейс аутентификации в другие программы,
# например, сервер SMTP который поддерживает Dovecot. Клиентский сокет
# обрабатывает фактическую аутентификацию, - вы можете передать ему имя
# пользователя и пароль и он вернёт OK или отказ. Таким образом можно
# довольно безопасно кому угодно обращаться к нему. Мастер сокет используется:
# a) для запроса, если клиент был успешно аутентифицирован
# b) для поиска в userdb.

# Слушающие сокеты будут созданы мастер-процессом Dovecot с использованием
# настроек из этого авторизационнго раздела
#auth default_with_listener {
#  mechanisms = plain
#  passdb pam {
#  }
#  userdb passwd {
#  }
#  socket listen {
#    master {
#      path = /var/run/dovecot/auth-master
#      # АХТУНГ: Предоставление недоверенным юзерам доступа к мастер-сокету 
#      # влечёт риск в безопасности, поэтому не давайте им слишком широкие
#      # (большие) полномочия!
#      #mode = 0600
#      # Деволтовые user/group от кого запускается dovecot-auth (root)
#      #user = 
#      #group = 
#    }
#    client {
#      path = /var/run/dovecot/auth-client
#      mode = 0660
#    }
#  }
#}

# Предполагается, что сокеты уже запущены, мастер-процесс Dovecot
# тока обрабатывает попытки соединится с ними. Им не нужны никакие
# настройки, кроме как путь до мастер-сокета, поскольку конфигурация сделана
# в другом месте.
# Отметьте, клиентские сокеты должны существовать в login_dir.
#auth external {
#  socket connect {
#    master {
#      path = /var/run/dovecot/auth-master
#    }
#  }
#}

plugin {
  # Тут можно задать некторые дополнительные переменные окружения для
  # майл-процессов. В основном это предназначено для параметров плагинов.
  # Расширение %variable сделано для всех значений.

  # Quota плагин. Много чё поддерживается:
  #   dirsize: Находит и сумирует все файлы в майл-директории
  #   dict: Сохранение квоты в словаре (т.е. SQL)
  #   maildir: Maildir++ квота
  #   fs: Поддержка квоты в ФС только-для-чтения (а как это?)
  #quota = maildir

  # ACL плагин. Конец vfile читает ACLs из "dovecot-acl" файла, в почтовой
  # директории. Также можно задать произвольный путь к глобальному каталогу ACL
  # где лежат ACL для применения на почтовые ящики всех пользователей.
  # Глобальный каталог ACL содержит один файл для каждого почтового ящика,
  # т.е. INBOX или sub.mailbox.
  #acl = vfile:/etc/dovecot-acls

  # Convert плугин. Если установлено, задаёт исходный путь, преобразованный
  # к месту нахождения (default_mail_env).
  #convert_mail = mbox:%h/mail
}

# P.S. 2006-05-29, 17:05 Заколебался... 963 строки...

После чего в этой же директории создаём файл dovecot-sql.conf с таким содержанием:
#!/bin/sh
# Для модуля sql passdb, вам необходима БД с таблицей, где содержатся поля,
# как минимум с userid и password. Если необходимо юзать синтаксис типа
# user@domain, вы должны иметь и поле domain (нелогично как-то...)
#
# Если все пользователи имеют одинаковый uig/gid, и меют предсказуемый
# домашний каталог, то можно использовать статический userdb модуль для
# создания домашних директорий, основанных на userid и domain. В этом случае
# поля home, uid, или gid не нужны в БД.
#
# Если вы предпочтёте использовать модуль sql userdb, то надо добавить
# поля home, uid, и gid. Пример таблицы:
#
# CREATE TABLE users (
#     userid VARCHAR(128) NOT NULL,
#     password VARCHAR(64) NOT NULL,
#     home VARCHAR(255) NOT NULL,
#     uid INTEGER NOT NULL,
#     gid INTEGER NOT NULL,
#     active CHAR(1) DEFAULT 'Y' NOT NULL
# );

# Драйвер БД: mysql, pgsql, sqlite
driver = mysql

# Строка соединения с БД. Специфична для каждого драйвера.
#
# pgsql:
#   Для доступных соединений смотрите документацию PostgreSQL,
#   PQconnectdb функцию libpq.
#
# mysql:
#   Основные операции эмулируют названия опций PostgreSQL:
#     host, port, user, password, dbname
#
#   Но также добавлены новые параметры настрйки:
#     client_flags        - Смотрите мануал по MySQL
#     ssl_ca, ssl_ca_path - Один, или оба пункта, чтобы разрешить SSL
#     ssl_cert, ssl_key   - Для отсыла клиентской части сертификата на сервер
#     ssl_cipher          - Минимально разрешённая безопасность
#                           шифра(default: HIGH)
# 
#   Вы можете соединитсья с UNIX сокетом с использованием его в переменной
#   host: host=/var/run/mysql.sock
#   Отметтьте, что в настоящее время вы не можете использовать
#   пробелы в параметрах.
#
# sqlite:
#   Путь к файлу базы данных.
#
# Примеры:
#   connect = host=192.168.1.1 dbname=users
#   connect = host=sql.example.com dbname=virtual user=virtual password=blarg
#   connect = /etc/dovecot/authdb.sqlite
#
connect = host=localhost dbname=exim user=exim password=exim

# Дефолтовая схема для пароля.
#
# Список поддерживаемых тем: http://wiki.dovecot.org/Authentication
#
default_pass_scheme = PLAIN

# Запрос на получение пароля.
#
# Этот запрос должен вернуть только одну строку с колонками "user" и
# "password". Колонка "user" нужна для того чтобы удостовериться, что
# достали то что надо :)
# Запрос может вернуть и другие поля, имеющие специальное значение.
# Подробности смотрите тут: http://wiki.dovecot.org/AuthSpecials
#
# Обычно используемые подстановки (переменные), полный список:
# http://wiki.dovecot.org/Variables
#   %u = имя пользователя (userid)
#   %n = Юзерская часть из user@domain
#   %d = Доменная часть из user@domain
# 
# Заметтьте, что они могут использоваться как входные данные к запросу
# SQL. Если вывод запроса - любая из этих замен, они не трогаются. Иначе
# былобы трудно иметь эквивалентные имена, содержащие символ '%'.
#
# Примеры:
#   password_query = SELECT `password` FROM `users` WHERE \
# `userid` = '%n' AND `domain` = '%d'
#   password_query = SELECT `pw` AS `password` FROM `users` \
# WHERE `userid` = '%u' AND `active` = 'Y'
# (не забудте убрать перевод строки, экранированный '/')
password_query = SELECT `username` as `user`, `password` FROM  \
`mailbox` WHERE `username` = '%n@%d' AND `active`='1'

# Запрос на извлечение инфы пользователя.
#
# Запрос может вернуть лишь одну строку. Колонки, что вернёт запрос:
#   home - Домашняя директория
#   mail - переменная(-нные) окуружения MAIL
#   system_user - Имя системного пользователя (чтобы получать
#   группы пользователя из /etc/group)
#   uid - системный UID
#   gid - системный GID
#
# Обязательно поле 'home' или 'mail'. 'uid' и 'gid' обязательны. Если
# запрос вернёт более одного ряда, или будут отсутствовать поля, то
# логин автоматически будет неудачным.
#
# Примеры
#   user_query = SELECT `home`, `uid`, `gid` FROM `users` WHERE \
# `userid` = '%n' AND `domain` = '%d'
#   user_query = SELECT `dir` AS `home`, `user` AS `uid`, `group` \
# AS `gid` FROM `users` where `userid` = '%u'
#   user_query = SELECT `home`, 26 AS `uid`, 26 AS `gid` \
# FROM `users` WHERE `userid` = '%u'
#
# (не забудте убрать перевод строки, экранированный '/')
user_query = SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` \
FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

# Если вы хотите обойтись одним запросом к БД, вместо двух
# (passdb + userdb), то можете использовать "userdb prefetch"
# в конфиге dovecot.conf. В этом случае надо будет выбрать всё
# одним запросом, и к полям второго запроса (про хомяк и прочее)
# надо будет добавить приставку "userdb_".
# Например:
# password_query = SELECT `userid` as `user`, `password`, `home` \
# as `userdb_home`, `uid` as `userdb_uid`, `gid` as `userdb_gid` \
# FROM `users` WHERE `userid` = '%u'

И пробуем запустить его:
/usr/home/lissyara/>echo 'dovecot_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/dovecot start
Starting dovecot.

Можно добавлять в админке пользователей, и пробовать зайти. Конечно, почтой ещё и не пахнет, но папочки посоздавать можно :)
  Затем добавляем кое-какие строчки в /etc/make.conf для сборки и дальнейшей пересборки экзима с нужными нам параметрами:
# для exim (если уже задавалась PORTSDIR ранее, то второй раз
# её задавать не надо)
PORTSDIR?=      /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
WITH_MYSQL=             yes
LOG_FILE_PATH?=         syslog
WITH_CONTENT_SCAN=      yes
WITH_DEFAULT_CHARSET?=  koi8-r
WITHOUT_IPV6=           yes
.endif

И устанавливаем exim:
/usr/home/lissyara/>cd /usr/ports/mail/exim
/usr/ports/mail/exim/>make && make install && make clean

После установки проверяем сендмайловую строку в /etc/rc.conf, должно быть так:
sendmail_enable="NONE"

Также надо подправить файл /etc/mail/mailer.conf до такого состояния:
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

После чего приводим конфиг exim к такому виду:
#!/bin/sh
# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...


# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы -
# типа qualify_domain и прочих..
# Если тут ничё не установлено (строка закомметрована)
# то используется то, что вернёт функция uname()
primary_hostname = mx.lissyara.su

# Вводим данные для подключения к MySQL серверу.
# словечко `hide`, вначале, означает, что при
# вызове проверки конфига командой
# exim -bV config_file эти данные не будут отображаться.
# Если без него - то будут показаны... Формат записи:
# хост/имя_бд/пользователь/пароль
hide mysql_servers = localhost/exim/exim/exim

# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также
# можно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
domainlist local_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${domain}' AND \
                            `active`='1'}}

# делаем список доменов с которых разрешены релеи.
# Далее этот список будет в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# .... = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${domain}' AND \
                            `active`='1'}}

# Составляем список хостов с которых разрешён неавторизованый
# релей. Обычно в нём находятся локальные сети, и локалхост...
# ЛокалХост в двух видах был внесён сознательно - пару раз
# сталкивался с кривым файлом /etc/hosts - результатом было
# непонимание `localhost` но пониманием 127.0.0.1/8
hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/16

# Вводим названия acl`ов для проверки почты. (В общем-то, это
# необязательно, если вы делаете открытый релей, или хотите
# принимать вообще всю почту с любого хоста для любых
# получателей... Тока потом не жалуйтесь что у Вас спам
# и провайдер выкатывает немеряный счёт :))
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

# Прикручиваем антивирус - при условии, что exim собран
# с его поддержкой. В качестве антивиря юзаем ClamAV,
# ибо - ПО должно быть свободным! :)
# Итак, указываем местоположение сокета clamd.
av_scanner = clamd:/var/run/clamav/clamd

# Адрес куда слать на проверку спама (SpamAssasin), но я
# это не юзаю. Не так много у меня спама...
# spamd_address = 127.0.0.1 783

# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт незадан, то используется
# имя хоста из `primary_hostname`. Логичней было бы написать здесь
# lissyara.su, но мне удобней иначе:
qualify_domain = mx.lissyara.su

# Имя хоста для ситуации, обратной предыдущей, - это имя домена
# добавляемое к почте для системных юзеров, ну и вообще для почты
# пришедшей на адрес типа `root`, `lissyara`, & etc... Если этот
# пункт незадан то используется значение полученное из
# предыдущего пункта - `qualify_domain`
qualify_recipient = mx.lissyara.su

# А это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет. По дефолту
# (когда строка закомментирована) значение - false. Если захотите
# поставить true то надо будет добавить в список доменов
# комбинацию @[] - она означает `все локальные адреса`
allow_domain_literals = false

# Пользователь от которого работает exim
exim_user = mailnull

# группа в кторой работает exim
exim_group = mail

# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root

# Проверяем соответствие прямой и обратной зон для всех хостов.
# Тока зачем это нужно - даже и незнаю... Спам на этом не режется...
# Зато возможны проблемы - если сервер зоны скажет `сервер файлед`
# то почту от этого хоста Вы не получите :)
#host_lookup = *

# Тоже анахронизм (на самом деле, не такой уж анахронизм, но все давно
# забили на ident и закрыли файрволлом tcp:113...) Это проверка - Ваш
# хост спрашивает у удалённого, с которого было подключение, а кто
# собстно ко мне подключился на такой-то порт? Если на удалённом хосте
# работает identd - он может ответить (а может и не ответить - как
# настроить), скажет UID пользователя от которого установлено
# соединение, тип ОС, и имя пользователя. Теперь, понимаете, почему
# у всех оно зарублено и файрволлами позакрыто? :) Это же палево :)
# Тока на мой взгляд, если на сервере всё настроено правильно -
# то вовсе это и не страшно.
# Короче - если хостс поставить * то будет проверять все. Таймаут -
# если поставить 0 то не будет ждать ответа ни от кого. По
# вышеописанным причинам - отключаем
#rfc1413_hosts = *
rfc1413_query_timeout = 0s

# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
recipient_unqualified_hosts = +relay_from_hosts

# Интересный пункт, тока я не вполне понимаю его логику.
# Позволяет выполнять что-то типа - пришло сообщение на
# локальный ящик user%test.su@lissyara.su и
# переправляет его на user@test.su. Делается это для
# перечисленного списка доменов (* - все):
# percent_hack_domains = *

# Если сообщение было недоставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 45m

# Замороженные сообщения, находящиеся в очереди, дольше
# указанного времени удаляются и генерится сообщение
# об ошибке (при условии, что это не было недоставленное
# сообщение об ошибке :))
timeout_frozen_after = 15d

# собсно на этом штатный конфиг кончился, но
# меня-то это не устраивает... Поэтому пошли пункты,
# почёрпнутые из других источников.

# список адресов, через запятую, на которые засылаются
# сообщения о замороженных сообщениях (о замороженых
# уведомлениях о заморозке, сообщения не генерятся. - я
# надеюсь эта строка понятна :))
#freeze_tell = admin@lissyara.su

# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO (тут указана моя подсеть)
helo_accept_junk_hosts = 192.168.0.0/16

# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h

# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"

# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 50

# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя). C числом 25
# я имел проблемы тока один раз - когда у меня три дня лежал
# инет и после его подъёма попёрли мессаги. Но у меня не так
# много почты - всего 30 пользователей.
smtp_accept_max_per_connection = 25

# чё-то про логи и борьбу с флудом - я так понимаю -
# максимальное число сообщений записываемых в логи
smtp_connect_backlog = 30

# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20

# Ход ладьёй - для увеличения производительности,
# директория `spool` внутри, разбивается на
# директории - это ускоряет обработку
split_spool_directory = true

# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15

# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k

# размер сообщения. У меня стоит относительно большой
# размер (`относительно` - потому, что на большинстве
# хостов оно ограничено 2-5-10мб, либо стоит анлим.)
message_size_limit = 64M

# разрешаем неположенные символы в HELO (столкнулся
# с этим случайно - имя фирмы состояло из двух слов
# и какой-то раздолбай домен обозвал my_firme_name
# прям с подчёркиваниями... Виндовые клиенты при
# соединении радостно рапортовали о себе
# `vasya.my_firme_name` ну а экзим их футболил :))
helo_allow_chars = _

# Принудительная синхронизация. Если отправитель
# торопится подавать команды, не дождавшись ответа,
# то он посылается далеко и надолго :) Немного,
# спам режется.
smtp_enforce_sync = true

# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +all_parents - все входящие?
# +connection_reject - разорваные соединения
# +incoming_interface - интерфейс (реально - IP)
# +lost_incoming_connections - потеряные входящие
# соединения
# +received_sender - отправитель
# +received_recipients - получатель
# +smtp_confirmation - подтверждения SMTP?
# +smtp_syntax_error - ошибки синтаксиса SMTP
# +smtp_protocol_error - ошибки протокола SMTP
# -queue_run - работа очереди (замороженные мессаги)
log_selector = \
    +all_parents \
    +connection_reject \
    +incoming_interface \
    +lost_incoming_connection \
    +received_sender \
    +received_recipients \
    +smtp_confirmation \
    +smtp_syntax_error \
    +smtp_protocol_error \
    -queue_run

# Убираем собственную временную метку exim`a из логов, её ставит
# сам syslogd - нефига дублировать
syslog_timestamp = no



### конфигурация ACL для входящей почты
begin acl

# Эти правила срабатывают для каждого получателя
acl_check_rcpt:


  # принимать сообщения которые пришли с локалхоста,
  # не по TCP/IP
  accept  hosts = :

  # Запрещаем письма содержащие в локальной части
  # символы @; %; !; /; |. Учтите, если у вас было
  # `percent_hack_domains` то % надо убрать.
  # Проверяются локальные домены
  deny    message       = "incorrect symbol in address"
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  # Проверяем недопустимые символы для
  # нелокальных получателей:
  deny    message       = "incorrect symbol in address"
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

  # Принимаем почту для постмастеров локальных доменов без
  # проверки отправителя (я закомментировал, т.к. это -
  # основной источник спама с мой ящик).

  accept  local_parts   = postmaster
          domains       = +local_domains

  # Запрещщаем, если невозможно проверить отправителя
  # (отсутствует в списке локальных пользователей)
  # У себя я это закоментил, по причине, что некоторые
  # железяки (принтеры, & etc) и программы (Касперский, DrWEB)
  # умеют слать почту, в случае проблем но не умеют ставить
  # нужного отправителя. Такие письма эта проверка не пускает.
#  require verify        = sender

  # Запрещщаем тех, кто не обменивается приветственными
  # сообщениями (HELO/EHLO)
  deny    message       = "HELO/EHLO require by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  # Принимаем сообщения от тех, кто аутентифицировался:
  # Вообще, большинство конфигов в рунете - это один и тот же
  # конфиг написанный Ginger, в котором этот пункт расположен
  # внизу. Но при таком расположении рубятся клиенты с adsl,
  # ppp, и прочие зарезанные на последующих проверках. Но это
  # жа неправильно! Этом мои пользователи из дома! Потому
  # я это правило расположил до проверок.
  accept  authenticated = *

# Рубаем нах, тех, кто подставляет свой IP в HELO
  deny    message       = "Your IP in HELO - access denied!"
          hosts         =  * : !+relay_from_hosts : !81-196.lissyara.su
          condition     = ${if eq{$sender_helo_name}\
    {$sender_host_address}{true}{false}}


# Рубаем тех, кто в HELO пихает мой IP (2500 мудаков за месяц!)
  deny    condition     = ${if eq{$sender_helo_name}\
    {$interface_address}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "main IP in your HELO! Access denied!"

# Рубаем тех, кто в HELO пихает только цифры
# (не бывает хостов ТОЛЬКО из цифр)
  deny    condition     = ${if match{$sender_helo_name}\
    {\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "can not be only number in HELO!"

  # Рубаем хосты типа *adsl*; *dialup*; *pool*;....
  # Нормальные люди с таких не пишут. Если будут
  # проблемы - уберёте проблемный пункт (у меня клиенты
  # имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
          condition     = ${if match{$sender_host_name} \
                               {adsl|dialup|pool|peer|dhcp} \
                               {yes}{no}}

  # Задержка. (это такой метод борьбы со спамом,
  # основанный на принципе его рассылки) На этом рубается
  # почти весь спам. Единственно - метод неприменим на 
  # реально загруженных MTA - т.к. в результате ему
  # приходится держать много открытых соединений.
  # но на офисе в сотню-две человек - шикарный метод.
  #
  # более сложный вариант, смотрите в статье по exim и 
  # курьер имап. Т.к. там метод боле умный (просто правил
  # больше :), то можно и на более загруженные сервера ставить)
  warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 30s
  warn
        # ставим задержку в 0 секунд своим хостам и 
        # дружественным сетям (соседняя контора :))
        hosts = +relay_from_hosts:213.234.195.224/28:80.253.9.18/32
        set acl_m0 = 0s
  warn
        # пишем в логи задержку (если оно вам надо)
        logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
        delay = $acl_m0

                          
  # Проверка получателя в локальных доменах.
  # Если не проходит, то проверяется следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +local_domains
          endpass
          message       = "In my mailserver not stored this user"
          verify        = recipient

  # Проверяем получателя в релейных доменах
  # Опять-таки если не проходит -> следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +relay_to_domains
          endpass
          message       = "main server not know how relay to this address"
          verify        = recipient

  # Рубаем тех, кто в блэк-листах. Серваки перебираются
  # сверху вниз, если не хост не найден на первом, то
  # запрашивается второй, и т.д. Если не найден ни в одном
  # из списка - то почта пропускается.
  deny    message       = you in blacklist: $dnslist_domain \n $dnslist_text
          dnslists      = opm.blitzed.org : \
                          cbl.abuseat.org : \
                          bl.csma.biz : \
                          dynablock.njabl.org

  # Разрешаем почту от доменов в списке relay_from_hosts
  accept  hosts         = +relay_from_hosts

  # Если неподошло ни одно правило - чувак явно ищет
  # открытый релей. Пшёл прочь. :)
  deny    message       = "Homo hominus lupus est"




# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.

acl_check_data:

  # Проверяем письмо на вирусы
  deny malware = *
  message = "In e-mail found VIRUS - $malware_name"

  # Если есть необходимость - тут проверки на спам

  # Пропускаем остальное
  accept



# чё делаем с почтой
begin routers

# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS -
# то это `унроутабле аддресс`. Не проверяются локальные
# домены, 0.0.0.0 и 127.0.0.0/8
dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

# смотрим альясы
system_aliases:
    driver      = redirect
    allow_fail
    allow_defer
    data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
            `address`='${quote_mysql:$local_part@$domain}' OR \
                `address`='${quote_mysql:@$domain}'}}

# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM \
  `alias` WHERE \
  `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery


# начинаются транспорты - как доставляем почту
begin transports

# Доставка на удалённые хосты - по SMTP
remote_smtp:
  driver = smtp

# Доставка локальным адресатам - в dovecot
# Надо заметить что тут использовалась ранее прямая доставка
# в директорию, но щас с портами стал-таки устанавливаться deliver
# программа dovecot занимающаяся доставкой мессаг.
# Соответственно юзаем его.
dovecot_delivery:
  driver = pipe
  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = mailnull


# Имя программы
address_pipe:
  driver = pipe
  return_output

# Транспорт для автоответов
address_reply:
  driver = autoreply



# Начинаются повторы недоставленных писем.
begin retry

# Этот кусок я не трогал. Думаю разработчики лучше знают,
# какие тут должны быть цифирьки. Если же вы это знаете
# лучше их - меняйте. Хотя... А какого, если Вы такой
# умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
# Address or Domain  Error   Retries
# -----------------  -----   -------
*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h


# преобразование адресов. У меня такого нету.
begin rewrite


# Секция авторизации при отправке писем. Ввиду того,
# что почтовых клиентов много, и все всё делают
# по-своему, то и механизмов авторизации три...
begin authenticators

# А вот по какому методу авторизуется оутглюк - я уже и
# не помню... Хотя в своё время долго ковырялся,
# пока настроил... Толь plain, толь login...
auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$auth2}' AND `password` = \
                     '${quote_mysql:$auth3}'}{yes}{no}}
  server_prompts = :
  server_set_id = $auth2

# Вроде по этому оутглюк, а по предыдущему нетскейп.
auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$auth1}' AND `password` = \
                     '${quote_mysql:$auth2}'}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $auth1

# А так авторизуется "Летучая Мышь" - TheBat!
auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT `password` FROM \
                        `mailbox` WHERE `username` \
                        = '${quote_mysql:$auth1}'}{$value}fail}
  server_set_id = $auth2

# Фсё. Конфиг кончился. Два дня убил.
# &copy; lissyara       2006-02-25, 01:19

По окончании конфигурения экзима ставим ClamAV (вообще-то exim уже можно запускать ибо почта идущая с локалхоста на вирусы не проверяется и потому прекрасно будет уходить и раскладываться в директории. Но - снаружи ничё не отправить)
/usr/home/lissyara/>cd /usr/ports/security/clamav
/usr/ports/security/clamav/>make install && make clean

Все опции я оставил по-дефолту (не выбрал ни одной - ибо по-умолчанию они все пустые)/ После установки добавляем строку в /etc/rc.conf и запускаем exim, предварительно прибив sendmail, также запускаем и обновляем clamav:
/usr/home/lissyara/>echo 'exim_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>killall -9 sendmail
/usr/home/lissyara/>killall -9 sendmail
No matching processes were found
/usr/home/lissyara/>
/usr/home/lissyara/>/usr/local/etc/rc.d/exim.sh start
Starting exim.
/usr/home/lissyara/>echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/clamav-clamd start
Starting clamav_clamd.
LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days.  ***
LibClamAV Warning: ***        Please update it IMMEDIATELY!       ***
LibClamAV Warning: **************************************************
/usr/home/lissyara/>freshclam
freshclam: Команда не найдена.
/usr/home/lissyara/>rehash
/usr/home/lissyara/>freshclam
ClamAV update process started at Wed May 31 10:20:58 2006
main.cvd is up to date (version: 38, sigs: 51206, f-level: 7, builder: tkojm)
Downloading daily.cvd [*]
daily.cvd updated (version: 1500, sigs: 5826, f-level: 8, builder: arnaud)
Database updated (57032 signatures) from database.clamav.net
 (IP: 213.219.245.4)
Clamd successfully notified about the update.
/usr/home/lissyara/>

Также неплохобы воткнуть строку про обновление антивирусных баз в рутовый планировщик - пару раз в сутки. Теперь можно создавать виртуальные домены и ящики. Ну, и после этого пробуем отправить письмо:
May 31 11:02:56 bsd-6-1 exim[26788]: 2006-05-31 11:02:56 exim 4.62 daemon started: pid=26788, -q30m, listening for SMTP on port 25 (IPv4)
May 31 11:03:05 bsd-6-1 dovecot: IMAP(lissyara@test-1.su): Disconnected in IDLE
May 31 11:03:05 bsd-6-1 dovecot: imap-login: Login: user=<lissyara@test-1.su>, method=PLAIN, rip=192.168.20.141, lip=192.168.20.100
May 31 11:03:20 bsd-6-1 exim[26792]: 2006-05-31 11:03:20 1FlKjg-0006y8-7w <= lissyara@test-1.su H=(lissyara) [192.168.20.141] I=[192.168.20.100]:25 P=esmtpa A=auth_login:lissyara@test-1.su S=755 id=001701c68480$3d744c30$8d08a8c0@derzhava.ru from <lissyara@test-1.su> for liss@test-1.su
May 31 11:03:20 bsd-6-1 dovecot: imap-login: Login: user=<lissyara@test-1.su>, method=PLAIN, rip=192.168.20.141, lip=192.168.20.100
May 31 11:03:20 bsd-6-1 exim[26793]: 2006-05-31 11:03:20 1FlKjg-0006y8-7w => liss <liss@test-1.su> R=dovecot_user T=dovecot_delivery
May 31 11:03:20 bsd-6-1 exim[26793]: 2006-05-31 11:03:20 1FlKjg-0006y8-7w Completed
May 31 11:03:20 bsd-6-1 dovecot: IMAP(lissyara@test-1.su): Disconnected: Logged out

Всё нормально. Почта ходит.

Выводы: Сам dovecot мне оччень понравился, есть только два НО.
1. С ним в комплекте должна идти утилита delivery - она занимается доставкой почты в ящики пользователей. Её нет... Почему - непонятно. Поэтому пришлось раскладывать самим экзимом.
2. Trash (Корзина, или удалённые) - не работает... Написано что оно в тестовм режиме, да к тому же похоже что под формат mailbox а я юзаю maildir....

P.S. Разобрался с плагином trash - смысл такой - если у юзера приходит сообщение и получается оверквота - то удаляются мессаги из указанных в конфиге директорий, в указанном порядке. Выглядит примерно так:
/usr/local/etc/dovecot.conf
plugin {
 trash = /usr/local/etc/dovecot-trash.conf
}

/usr/local/etc/dovecot-trash.conf
1 Spam
2 Trash
3 Sent

Т.е. вначале удаляются из папки Spam, потом из Trash и т.д.
Короче, на мой взгляд, абсолютно бесполезная фича... Лучшеб нормальную папку "Удалённые" привернули, которая на стороне сервера, а не клиента...

P.S.2 Вылезли такие грабли - на новых MySQL (я на 5-м столкнулся) бывает что после установки такая ругань в логах:
Jul 5 00:09:21 lissyara dovecot: auth-worker(default): mysql: Connect failed to localhost (dovecot): Доступ закры
т для пользователя 'exim'@'localhost' (был использован пароль: ДА) - waiting for 1 seconds before retry

Причём ругань абсолютно необоснованная - пароль и пользователь верные. Лечится таким, примерно запросом:
SET PASSWORD FOR 'exim'@'localhost' = OLD_PASSWORD('exim');

Соответственно в нём подставить свои данные...



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=3601.

размещено: 2006-05-31,
последнее обновление: 2010-11-24,
автор: lissyara

оценить статью:

Urgor, 2006-06-14 в 8:39:22

Ну Лисяра! Ну матерый человечище! Признаюсь едва дочитал до конца, а как представлю сколько времени ты на написание потратил — страшно делается. Респект тебе огромный! Я как раз сам пытался разобраться, а тут такая статья! :)

Urgor, 2006-06-16 в 16:39:25

Я убью тебя, лодочник.
"user_query = SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'", т.е. uid всегда будет 26! А dovecot на это говорит: "Logins with UID 26 (user admin@test.ru) not permitted (see first_valid_uid in config file)"

lissyara, 2006-06-16 в 17:19:40

==========================
# Действительный диапазон UID для пользователей, дефолт от 500 и выше. Это
# необходимо для того, чтобы пользователи не смогли залогиниться как
# демоны или какие-либо системные пользователи. Запрет для логина `root`а
# жёстко забит в код `dovecot`а и не может быть разрешён даже если
# установить 'first_valid_uid' = 0.
first_valid_uid = 25
#last_valid_uid = 0
=========================
не умничаем, а делаем копи-пасте всего конфига :)))
P.S. Конечно, наверно это не совсем правильно, может даже совсем неправильно от этого UID делать... Но я так привык :(

Urgor, 2006-06-19 в 7:57:54

Лис, бля буду, так и делал, тока в начале адреса поменял... После того как завел юзера с UID=501, и first_valid_uid = 500... кот запустился, естессно ексим перевел под этого же юзера. странно. может это из-за винбинда? но у не го уиды старше 10000... Надо на нулевой машине попробовать будет.
Да, есть еще один коcячек. Почта падала в папку /var/mail/user@domain/ а забирать он пытался из /var/mail/user@domain/new (и говорил что писем нет), пришлось поправить папку на:
directory = /var/mail/exim/${lookup mysql{SELECT \
           `maildir` FROM `mailbox` WHERE `username` \
            = '${quote_mysql:$local_part@$domain}'}}new/

john, 2006-07-19 в 17:35:06

У меня проблема! Все сделал по вышим конфигамю. все запустилось без ошыбок, но при авторизации, dovecot выдает грабли!
Вот лог



dovecot: auth-worker(default): sql(john,10.100.1.100): query: SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = 'john@' AND `active`='1'

mail1 dovecot: auth(default): client in: AUTH   1       PLAIN   service=POP3    lip=10.100.1.105        rip=10.100.1.100      resp=AGpvaG4AMTIz

dovecot: auth-worker(default): sql(john,10.100.1.100): unknown user

dovecot: auth(default): client out: FAIL  1       user=john

dovecot: pop3-login: Disconnected: user=<john>, method=PLAIN, rip=10.100.1.100, lip=10.100.1.105


По этому логу я понял что переменная %d не содержит тот домен с который содержиться в адресе а должно бы писаться

dovecot: auth-worker(default): sql(john,10.100.1.100): query: SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = 'john@xxx.com' AND `active`='1'


Yanis.sql.ru, 2006-08-04 в 22:21:22

После установки postfixadmin не работал, на новый создаваемый домен ругался, что Домен уже существует, я добавил домен напрямую в БД, но он не мог его нормально открыть даже на редактирование, также не мог создать пользователя - ругался на пустой пароль и уже существующего пользоваетеля с таким именем.
Вылечилось установкой magic_quotes_gps = On в php.ini

razor, 2006-08-15 в 17:56:32

" но это не есть правильно, ибо при обновлении при помощи программы portupgrade это потеряется (сам влетел, собрал с кодировкой и коллатион cp1251, а после обновления клиента получил знаки вопроса вместо русских букв), правильно - добавить в файл /etс/make.conf примерно такую секцию:"

а почему б не юзать специальный для этого файлик /usr/local/etc/pkgtools.conf ?

vendigo, 2006-09-01 в 16:01:54

При запуске довекота столкнулся с такими граблями :
auth-worker(default): mysql: Connect failed to localhost (exim):Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) - waiting for 1 second before retry
причем не лечится путем запроса SET PASSWORD FOR 'exim'@'localhost' = OLD_PASSWORD('exim');

Юрий, 2006-10-12 в 14:32:24

Я делал по похожой статье и по своим мыслям , все вроде ОК , только проблема в dovecot  .. спасате мужики !!


unix# cat /usr/local/etc/dovecot.conf
## Dovecot configuration file

base_dir = /var/run/dovecot/
protocols = pop3
disable_plaintext_auth = no

ssl_disable = yes
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_size = 64
login_greeting = Hello there!
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
default_mail_env = maildir:/var/spool/mail/tradehouse.local/%n/Maildir
mail_extra_groups = mail
# mail_debug = yes
mail_log_prefix = "%Us(%u): "
verbose_proctitle = yes
first_valid_uid = 1000
first_valid_gid = 0

protocol pop3 {
login_executable = /usr/local/libexec/dovecot/pop3-login
mail_executable = /usr/local/libexec/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  }

 auth_executable = /usr/local/libexec/dovecot/dovecot-auth
 auth_process_size = 256
 auth_verbose = yes
 #auth_debug = yes
 #auth_debug_passwords = yes
 auth default {
 mechanisms = plain
 passdb passwd {
               }
 passdb sql {
 args = /usr/local/etc/dovecot-sql.conf
            }
 userdb passwd {
           }
 userdb sql {
 args = /usr/local/etc/dovecot-sql.conf
            }
   }
                                   unix#


unix# cat /usr/local/etc/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=maildb user=sqlmail password=dolphin.hfijcnrf
default_pass_scheme = PLAIN
password_query = SELECT clear_pw AS password FROM users WHERE username = '%n'
user_query = SELECT maildir AS home, 1981 AS uid, 1981 AS gid FROM users WHERE username = '%n'

Выдает ошибку при telnet localhost 110

unix# telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there!
user dolphin
+OK
pass .hfijcnrf
+OK Logged in.
-ERR No INBOX for user.
Connection closed by foreign host.


ЛОГ

Oct 12 13:31:43 unix dovecot: auth(default): passwd(dolphin,127.0.0.1): password mismatch
Oct 12 13:31:43 unix dovecot: pop3-login: Login: user=<dolphin>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Oct 12 13:31:43 unix dovecot: POP3(dolphin): lstat(/var/spool/mail/tradehouse.local/dolphin/Maildir/cur) failed: Permission denied
Oct 12 13:31:43 unix dovecot: POP3(dolphin): lstat(/var/spool/mail/tradehouse.local/dolphin/Maildir/cur) failed: Permission denied
Oct 12 13:31:43 unix dovecot: POP3(dolphin): Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2006-10-12 13:31:43]
Oct 12 13:31:43 unix dovecot: POP3(dolphin): No INBOX for user top=0/0, retr=0/0, del=0/0, size=0


unaos, 2006-10-25 в 16:22:01

john,  получилось разрулить с пустым доменом ?

tiger, 2006-11-30 в 21:43:23

замечание по поводу PHP. я сам использую 4ый. не поленился и посмотрел на 5ый (в портах). там кстати тоже по дефолту стоит APACHE "Build Apache module" off
Видимо дело не в желании перегнать на 5ую ветку, это какие личные соображения мейнтейнера
кроме того неясны причины отключения SSL. неужели он есть просит если присутствует?:)
Это так, по диагонали читал, в целом респект тебе lissyara

Daemony, 2006-12-10 в 16:26:55

Есть одно замечание:

В dovecot-sgl.conf используется тип авторизации PLAIN.
В /usr/local/www/postfixadmin/config.inc.php стоит по умолчанию

$CONF['encrypt'] = 'md5crypt';

Так вот, с такой постановой, при добавлении пользователей через веб-интерфейс, нифига работать не будет - Dovecot ругается на ошибки авторизации. У меня по крайней мере не заработало (ковырялся два часа :( ....)

а в логах одна хрень:

dovecot: pop3-login: Disconnected: user=<admin@myhost.org>, method=PLAIN, rip=bla.bla.bla.bla, lip=bla.bla.bla.bla, TLS

Проблема решилась так:
Нужно исправить postfixadmin/config.inc.php:

$CONF['encrypt'] = 'cleartext';

Правда в этом случае в MySQL пароли будут лежать в чистом виде, а нас это конечно не устраивает:

Поэтому в dovecot-sgl.conf пишем

default_pass_scheme = MD5

Авторизация проходит. Пароль пользователя в базе лежит в виде md5 хеша.

------------------

А вообще Lissyara спасибо тебе большое за труд.
Давно искал нормальный перевод конфига dovecot. Нашел его на твоем сайте. :)

Сергей, 2007-01-20 в 20:39:00

squirrelmail + subj кто-нить ставил?
у меня лично получается полная чушь
то есть не могу создать папку, в которой могут быть подпапки
точнее могу при использовании outlook... а вот squirrelmail обламывается :(

SGI, 2007-02-27 в 17:09:09

Ура!! Это первая статья, после которой я решился-таки попробовать Exim. Предыдущие пугали обилием непонятных настроек, а тут все разжевано. Собственно, была еще одна причина перехода - с новым ClamAV перестал работать скрипт проверки из-под Постфикса. Сейчас все ок. Все-таки Постфикс в части сопряжения с антивирусами кривоват. Перевел на Экзим два сервера - один с практически таким же конфигом (mysql, dovecot), второй - шлюз для Exchange. SpamAssassin отключил нафиК в обоих случаях :-) Посмотрю, сколько будет проходить спама, если что - dspam еще прикручу. СПАСИБО!!!

Ilya98, 2007-03-04 в 15:52:35

Уважаемый Лисяра!

Эта информация является не Вашей, а в том числе добытой из Инета! Да она собрана Вами по кускам, отлично обработана,
но не авторская :)

 например, форум Ginger
http://forum.ru-board.com/topic.cgi?forum=8&topic=4514&start=400  
в том числе решение                                    
SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('mypass');

А посему Ваше предложение (см. внизу и этой страницы) не совсем корректно :)
"Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу, откуда взяли."

Ilya98

Ilya98, 2007-03-04 в 15:58:58

В любом случае, за проделланную Вами работу огромное спасибо!

Иметь такой подстрочник очень приятно.

Иногда просто нет сил его вести, а тут .... Да еще с русскими комментами.

lissyara, 2007-03-04 в 16:26:06

Клёво... Спасибо конечно, но при таком подходе, ничто кроме написанного авторами программ не является авторским.
P.S. Информация об OLD_PASSWORD тоже не является вашей авторской, корректней было бы указать линк на документацию MySQL, а не ваш пост на форуме :))
===============
Ну и я всё же не понял претензий.
Не нравиться перевод конфигов? Переведи сам - лучше.
Не нравиться статья? Напиши сам - лучше.
Ещё что-то не нравиться? Ответ ты уже знаешь :)

Ilya98, 2007-03-05 в 15:34:36

1)В посте на форуме лежит, в том числе, ссылка на доку мускула :)
2)Претензий к содержимому нет, есть спасибо

IMHO. "Ничто кроме написанного авторами программ не является авторским"

lissyara, 2007-03-05 в 16:19:51

Конценсус :)))

Ilya98, 2007-03-05 в 22:55:54

Советую все же убрать приписку снизу. Т.к. Вы нарушаете GNU Free Documentation License.
Почитать об это подробнее можно здесь:
http://ru.wikipedia.org/wiki/GNU_Free_Documentation_License

lissyara, 2007-03-05 в 23:54:56

Вы уж извините, но ваш любимый форум, и те кто его поддерживают - они не нарушают никаких лицензий, тупо делая Сtrl+С и Ctrl+V со статей?
Ну ладно, что скопировал.
Ну ладно, что вместе с комментами, не отделив от текста.
Но какого ху... себя автором подписывать?
И потом не отвечать ни на письма, ни на формы обратной связи. Пока не пошёл на форум и прямо не спросил про воровство - никто не часался.
Зато после этого быстро удалили статьи и заодно мой аккаунт на форуме, видно, чтобы не смущал честных посетителей. Я ещё два раза регался чтобы высказать своё мнение - цивильно, без мата. Оба раза топики тут же удалялись, вместе с моей учёткой.
Я буду приписывать что угодно, и где считаю нужным, пока в инете не переведутся такие уроды.
А значит - всегда.
P.S. По правилам Русского Языка, слово 'вы' пишется с маленькой буквы. Иначе - это грамматическая ошибка :) (Просто вспомнилось - не в укор :). И вообще, всё вышесказанное относиться не к вам, а к первому линку.)

lissyara, 2007-03-06 в 0:05:45

Кстати, про документацию и прочий свободный софт - очень сложный вопрос как толковать документы типа моих мануалов - они  или производные  от собранного материала, или же что-то придуманное мною (тот же постфиксадмин никто вроде до меня не крутил к exim). Да и ушёл я довольно далеко от исходного конфига Ginger (Кстати - в одной из первых статей указано, что начинал с ёе конфига).
Короче вопрос спорный, но во избежание воровства, из-за которого это и появилось (опять же - сравнительно недавно, когда стали передирать прям вместе с меню сайта, тупо сохраняя HTML - благо графики у меня принципиально нет), оставлю как есть.
P.S. Больная мозоль: Вышеупомянутый же сайт требовал обязательного согласия автора на перепечатку (это моей же статьи!!). Так что хватит пустого спору...

Аноним, 2007-03-06 в 13:58:04

В тысячный раз повторяю, РОССИЯНЕ, не идите на поводу у  ПИНДОСИИ и её ДЕНЕГ. Нет там более ничего и небыло никогда.
Хочу предоставить лиц. Microsoft для windows/office и т.п. для России? Интересно? Смысл в следующем:

1. Есть факт покупки легально приобретённого Windows.
2. Есть наклеенный сертификат
3. Ключ на сертификате совпадает с установленным в системе.

ВСЁ. Никаких 500 миллонов видов лицензий. :-) Зачем идти на поводу у ПИНДОСИИ? Деньги, деньги. Они нужны не всем и не в таком количестве, которое навязывают.

Для Ильи посоветую адаптироваться не в сторону денег(пиндосии), а стать нормальным человеком без тараканов в голове.
И смысл поста мне несовсем понятен, если что-то помогает, интересно,то пусть буржуи переживают. Хватило бы ума РОССИИ вступить в ВТО и забить на авторские права(авторское бабло).

Хотите денег? Почитайте этого автора (Дмитрий Неведимов - Религия денег) и посмотрите, как на воздухе делают деньги

P.S. Если вам уже навязали что-то (будь то авторские права и т.п.), не значит кчто это круто, правильно и вообще необходимо. Просвещайтесь.

Ilya98, 2007-03-07 в 11:56:02

Это тянет на +++.
Но не смог сдержаться. Извини, Лисяра!
1) Вы с Большой буквы, как признак уважения :) писать Надо с Большой Буквы :) Это тоже по правилам русского языка :)
2) Аноном заткнись - ты не в теме. Прочитай содержимое по ссылке.
3) © имя (наименование) автора или иного правообладателя, год первого
опубликования документа
Каждый имеет право воспроизводить, распространять и/или вносить изменения в
настоящий Документ в соответствии с условиями GNU Free Documentation License,
Версией 1.2 или любой более поздней версией, опубликованной Free Software
Foundation;
данный Документ не содержит Неизменяемых разделов, не содержит
Текста, помещаемого на первой странице обложки и не содежит Текста,
помещаемого на последней страницы обложки.
Копия лицензионного соглашения включена в секцию, озаглавленную "GNU
Free Documentation License".
Так было бы честнее, да и правильнее.

Gruber, 2007-04-26 в 15:38:50

Небольшая поправочка:
Daemony  писал -
Поэтому в dovecot-sgl.conf пишем
default_pass_scheme = MD5

в новой версии dovecot нужно писать MD5-CRYPT
иначе ошибка остаётся

ALex_hha, 2007-04-26 в 18:29:36

Имхо, болле правильно запретить использовать plain text based методы аутентификации, если клиент не использует SSL/TLS. К счастью dovecot позволяет это. И не заморачиваться с шифрованием самих паролей в базе.

playnet, 2007-05-14 в 12:57:38

>По правилам Русского Языка, слово 'вы' пишется с маленькой буквы. Иначе - это грамматическая ошибка :)
"Вы" пишется с большой при обращении к конкретному человеку, признак уважения. "вы" с маленькой, когда обращение к группе лиц. И о каких ошибка ты говоришь, если сам писать не умеешь...
"И вообще, всё вышесказанное относиться не к вам, а к первому линку"
В данном случае получается "относИться", ибо мягкий знак говорит о том, что это неопределенная форма. (что делаТЬ) относиТЬся, (что делаеТ) относиТся.
И поправь плиз все подобные слова в тексте. Статьи хорошие, но твоя безграмотность просто поражает.
Хоть в ворд загружай перед вставкой, он тебе выделит ошибки.
И почисти уже комменты, перепалка про лицензии явный оффтоп.

lissyara, 2007-05-14 в 13:42:03

перепалку не уберу, а вот ошибки поправлю.
а ворда у меня нет :)
lissyara$ uname -v
FreeBSD 7.0-CURRENT #0: Tue May  8 08:57:57 MSD 2007

playnet, 2007-05-15 в 22:49:33

Хы, первый автор, который не трет неугодные комменты, а  нормально отвечает...
респект!
(оффтоп) у одного знакомого ОО стоял с проверкой грамматики...
Хотя я сам админ, и могу сказать: на рабочей машине фря — изврат. Для себя я выбрал генту, как вменяемый вариант pcBSD и подобные.

playnet, 2007-05-15 в 23:57:01

кстати, хорошая подборка факов по exim..
http://forum.ru-board.com/topic.cgi?forum=8&topic=4514&start=0

okkay, 2007-05-16 в 6:56:51

поставил exim и dovecot по статье,
как мне создавать почтовые аккаунты?
и что такое вообще: `goto` text NOT NULL - в таблице alias. Так как в ../exim/configure именно это поле goto участвует в выборке.
Создал пользователя таким образом:
insert into mailbox (username,password,name,quota,domain) values ('pupkin','pup'),'vasya',1024,'mydomain.ru'); - после чего в /var/mail/exim - ничего не создалось. Куда рыть?(пока во время испытаний использую plain аутентификацию)
Потом в рабочей станции в клиенте The Bat! создал почтовый ящик, прописал все настройки.
Жму: получить и доставить почту...
16.05.2007, 11:42:46: FETCH - Соединение с POP3 сервером прошло удачно
!16.05.2007, 11:42:48: FETCH - Сервер сообщает об ошибке: -ERR Authentication failed.
куда рыть?
спасибо за ответы

lissyara, 2007-05-16 в 8:58:19

2 playnet
я тоже тру. Когда с матом - бывает у человека что-то не получается, он в камментах такие перлы оставляет, что даже я, после 2 лет службы в стройбате, такого не слышал :))
А если идёт диалог - не вижу смысла тереть. Иначе нить потеряется :)
2 okkay
поставь админку. Там все таблицы взимосвязаны. Заодно про роутеры почитай и конфиг посмотри в их же части - много вопросов сами пропадут.

Mi©k, 2007-05-24 в 16:30:35

Рацпредложение
два правила
# Рубаем нах, тех, кто подставляет свой IP в HELO
# Рубаем тех, кто в HELO пихает мой IP (2500 мудаков за месяц!)
заменяем одним
# Рубаем тех, кто в HELO пихает IP (
 deny  message = Not accepted - IP as HELO
       hosts    = !127.0.0.1 : !192.168.1.0/24
       condition = ${if isip {$sender_helo_name}}

reLax, 2007-05-26 в 11:05:19

Ошибка в авторизации в SQL запросе. Надо так:

auth_plain:
 driver = plaintext
 public_name = PLAIN
 server_condition = ${lookup mysql{SELECT `username` FROM \
                    `mailbox` WHERE `username` = \
                    '${quote_mysql:$2}' AND `password` = \
                    '${quote_mysql:$3}'}{yes}{no}}
 server_prompts = :
 server_set_id = $2

lissyara, 2007-05-26 в 13:54:06

Исправил на ещё более корректный вариант - в соответствии с новой документацией (использовать $auth1 вместо $1 и т.д.).

sng, 2007-06-18 в 21:39:03

Спасибо, Лиссяра! Отличный повод для установки exim+dovecot, статья сподвигнула меня установить что-то новое. Только по поводу алиасов. Есть косячок. Если мы заводим в админке алиас с домена на домен @domain1.su -> @domain2.su то данный конфиг у меня не заработал, в логах пишет про отсутствующую local part. Предлагаю заменить на:
# Переадресация для пользователей                                              
user_aliases:                                                                  
   driver = redirect                                                          
   allow_fail                                                                  
   allow_defer                                                                
   data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \                    
           `address`='${quote_mysql:$local_part@$domain}'}{$value}fail}        
                                                                               
# Переадресация для доменов и catch-all                                        
domain_aliases:                                                                
   driver = redirect                                                          
   allow_fail                                                                  
   allow_defer                                                                
   data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \                    
           `address`='${quote_mysql:@$domain}'} \                              
           {${if eq {${local_part:$value}}{}{$local_part$value} \              
           {$value}}}fail}                                                    
Ежели чего - поправьте меня. Уж как смог.

RockerMan, 2007-06-21 в 15:26:29

На всех созданных таблицах phpmyadmin ругается
---
Проблемы с индексами таблицы `admin`
PRIMARY and INDEX keys should not both be set for column `username`
---
Проблемы с индексами таблицы `alias`
PRIMARY and INDEX keys should not both be set for column `address`
---
Проблемы с индексами таблицы `domain`
PRIMARY and INDEX keys should not both be set for column `domain`
---
Проблемы с индексами таблицы `mailbox`
PRIMARY and INDEX keys should not both be set for column `username`
---
Проблемы с индексами таблицы `vacation`
PRIMARY and INDEX keys should not both be set for column `email`
---

Это нормально? Если нет как исправить?

walker, 2007-06-21 в 22:14:22

структура БД далека от совершенства. возможно конечно это связано с вопросами быстродействия. но в данном случае полно избыточной информации и ссылочная целостность реализована не за счет субд а за счет винимательности админа

nk, 2007-07-11 в 11:20:46

при сборке Dovecot выбираем также опцию LDA Local delivery Agent чтоб нормально почта приходила
Раньше её небыло

variantolog, 2007-07-23 в 1:59:30

# Отключить команду LOGIN и все другие plaintext аутентификации если
# SSL/TLS не используется. (совместимо с LOGINDISABLED). Отметтьте, что
# 127.*.*.* и IPv6 ::1 адреса считаются безопасными, и установки этого пункта
#  не влияют на соединение с них.
disable_plaintext_auth = no

--------------------------------------------------------

Опечатка. Надо читать: Отключить команду LOGIN и все другие plaintext аутентификации если [b]используется SSL/TLS.

KaMa-CyTpA, 2007-07-26 в 20:38:10

Ловите "грабли" постфиксадмина:
function.inc.php редактируем:
В самом конце перед >? пишем строку
db_connect();

именно так - и никак иначе.
backup.php редактируем:
$path = "/tmp/"; - фиг там!
Он должен быть
$path = "/var/tmp/";

И ещё одна вещь. В файле function.inc.php перед строкой 131 (именно прямо перед ней!) добавляем пустую строку и в ней тоже пишем
db_connect();

mars, 2007-07-27 в 9:50:36

И ещё одна вещь. В файле function.inc.php перед строкой 131 (именно прямо перед ней!) добавляем пустую строку и в ней тоже пишем
db_connect();

мне хватило этого
по крайней мере пока что ;)

Yura, 2007-08-06 в 22:38:57

Так и не заработала отправка локальным хостам через dovecot_delivery, пишит deliver(test@ultrax.lan): Failed to create storage for 'test@ultrax.lan' with mail 'mbox:test@ultrax.lan//mail/:INBOX=/var/mail/test@ultrax.lan'. Ну и фиг с ним! Подредактировал штатный local_delivery и все работает на ура!

redbaron, 2007-08-09 в 7:02:00

Что-то я не понял один момент - а где создаются сами почтовые ящики под каждого пользователя? Их delivery должен создавать?

sergey, 2007-08-10 в 0:40:14

#!/bin/sh
# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...
по мимо спасибо за проделанную работу, предлагаю автору сайта "пиво", если будет встреча лично проставляюсь....спасибо

guest, 2007-08-10 в 1:27:03

у меня в бд пассы лежат в мд5, как сделать чтобы dovecot их считывал от туда и авторизовывал юзеров?

Yura, 2007-08-10 в 22:48:58

2 redbaron:
Их Dovecot создает

dodger, 2007-09-28 в 11:23:55

1. Вообще не советую применять авторизацию по SMTP! Потому что юзеры пользуются MS-Win, в котором червяки появляются ооооочень часто. А червяки последнее время пишутся за бабки, и финансирует программирующих этих животных  - угадайте кто? Насколько быстро один из паролей попадет к спаммерам - вопрос времени и количества аккаунтов (по прошествии этого времени, вы - открытый релей).
2. Чтобы не попасть в списки rfc-ignorant очень рекомендую поправить сей конфиг! В частности это касается HELO с IP адресом (Лиссяра сделал правильно, а вот участнику Mi©k я советую читать RFC), почты user@[IP.add.re.ss] и фильтрации писем на postmaster@dom.ain.
3. Изучите политику RBL перед тем как использоватье его! Особенно это касается таких списков, как bl.csma.biz.

Вроде все. Если я не прав - пишите на мыло, а то может и мои знания уже устарели (BTW, все это - опыт работы в ISP).

Al, 2007-10-05 в 16:48:34

если в постфиксадмине при добавлении ящика говорит "неверное имя", то проверку мона отключить так:
/usr/local/www/postfixadmin/functions.inc.php
в функции function check_email ($email) заменить false на true. т.е. всегда правильно

AL, 2007-10-05 в 16:53:58

В postfixadmin правил templates/header.tpl на предмет charset в <head>. Я поставил 1251. Все по русски, никуда кодировка не уезжает.
С меню боролся отключением padding в stylesheet.css для #menu ul li
(автор - sst78rus)

Al, 2007-10-05 в 17:26:05

если ругается на /usr/local/libexec/dovecot/deliver, то ищем
local_delivery: в дефолтовом конфе и заменяем метод локальной доставки.Не забывая его при этом не только подставить,но и описать.

Al, 2007-10-05 в 18:55:17

если ругается на /usr/local/libexec/dovecot/deliver, то ниче не  ищем, а пересобираем dovecot:
make deinstall,make clean, make config, make all ,make install
в окне выбираем LDA

Al, 2007-10-08 в 15:56:52

если postfixadmin не добавляет пароль в базу (у меня пароль в !открытом! виде),то в /usr/local/www/postfixadmin/admin/create-mailbox.php - ищем строку "$password = pacrypt ($fPassword);" и меняем ее на "$password = $fPassword ;" этим мы убрали шифрование

Al, 2007-10-11 в 15:39:28

Если надо сделать автоответ(напр,когда сотрудник в отпуске) в конф exim дописываем:
## роутер автоответов
userautoreply:
     driver = accept
     condition = ${if eq{} {${lookup mysql{SELECT `recipient` FROM `autoreply` \
                           WHERE `recipient`='$local_part@$domain'}}}{no}{yes}}
     transport = userautoreply
     unseen
и
## транспорт для автоответов(не рекошет)
userautoreply:
       driver = autoreply
       headers = "Content-Type: text/plain; charset=windows-1251"
       to = ${sender_address}
       from = ${local_part}@${domain}
       subject = "Re: $h_subject"
       text = "testing user_autoreply"
в соотв. секции конфига
таблица SQL
CREATE TABLE `autoreply` (
`id` int(100) NOT NULL auto_increment,
`recipient` varchar(50) NOT NULL default '',
`subj` varchar(50) character set koi8r NOT NULL default '',
`message` varchar(50) character set koi8r collate koi8r_bin NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
также можно брать текст и тему из автоответа из SQL
http://forum.lissyara.su/viewtopic.php?f=20&t=2134&p=13274&hilit=autoreply#p13274

Al, 2007-10-30 в 11:59:48

если в постфиксадмине хотим шифровать пароли-убираем коменты с $CONF['encrypt'] = 'md5crypt'; в /usr/local/www/postfixadmin/config.inc.php

deonisiy, 2007-11-06 в 18:42:57

При попытке запуска Dovecot, вываливается ошибка
/usr/local/etc/rc.d/dovecot start
Starting dovecot.
Error: Error in configuration file /usr/local/etc/dovecot.conf line 821: Unknown section type (section changed at line 821)
Fatal: Invalid configuration in /usr/local/etc/dovecot.conf

В этой стоке есть параметр: passdb sql

идеи?

friman, 2007-11-08 в 15:02:36

>С меню боролся отключением padding в stylesheet.css для >#menu ul li
Лучше имхо так - если вы выбрали русский язык, то придется немного подправить файл
/usr/local/www/postfixadmin/templates/admin_menu.tpl, т.к. иначе меню налезают друг на друга.
После строки
<li><a target="_top" href="backup.php"><?php print $PALANG['pAdminMenu_backup']; ?></a></li>
добавить следующее
<br><br><br><br>
P.S. По ошибкам в форум.

Al, 2007-11-08 в 15:10:45

>В этой стоке есть параметр: passdb sql
>идеи?

у меня так:
passdb sql {
 args = /usr/local/etc/dovecot-sql.conf
}
ну а dovecot-sql.conf - практически из статьи

AlkoGekS, 2007-11-13 в 14:49:31

Лис, добавил бы еще про пересылку почты, а то две статьи построчно сравнивать жестоко :)
# system filter
# А тут у начальства заскок - желание контролировать всё.
# Вот и пришлось сделать копию всей почты.
# Вот тока в IT отделе, как выяснилось, никто никому не пишет :)
system_filter = /usr/local/etc/exim/copy_mail.conf


CREATE TABLE `alias` (
 `address` varchar(255) NOT NULL default '',
 `goto` text NOT NULL,
 `domain` varchar(255) NOT NULL default '',
 `created` datetime NOT NULL default '0000-00-00 00:00:00',
 `modified` datetime NOT NULL default '0000-00-00 00:00:00',
 `active` tinyint(1) NOT NULL default '1',
 `copy_mail` int(1) NOT NULL default '1',
 PRIMARY KEY  (`address`),
 KEY `address` (`address`)
) TYPE=MyISAM COMMENT='Exim and Dovecot Admin - Virtual Aliases';

Schax, 2007-11-20 в 13:21:37

Когда переменная %d пустая нужно установить домен по умолчанию (у меня один домен)

auth_default_realm = domain.com.ua

и все работает

MAPTbIH, 2007-11-23 в 23:33:19

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

Voldimar, 2007-11-25 в 10:35:22

В таблице alias есть поле copy_mail, как у AlkoGekS.

А дальше роутер:

begin routers
always_bcc:
 driver = redirect

 condition = ${lookup mysql{SELECT min(`copy_mail`) FROM `alias` WHERE \
           `address`='${quote_mysql:$local_part@$domain}' or `address`='${quote_mysql:$sender_address}'}}
 data = always_bcc@amstor.ua
 unseen

Все.

Сергей, 2007-12-01 в 19:38:18

Спасибо огромное!

sst78rus, 2007-12-19 в 11:57:47

Переставлял связку заново и нашел причину того, что в postfixadmin русские буевы кракозябрами. Там просто не определена переменная в ru.lang
Надо в файл languages/ru.lang добавить переменную:

$PALANG['charset'] = 'cp1251';

Правильно кодировка может по другому называется, но у меня сработало и так.

Sergey, 2008-01-07 в 3:21:53

Спасибо за статью. Есть два вопроса
1. Если письмо отправлено на несуществующий почтовый ящик причем с +local_domains в логах все же пишет Unrouteable address, и письмо замораживает, как сделать чтобы ответ писался что мол такого ящика нет.
2.Не могу отправить почту наружу"
2008-01-07 03:18:04 1JBfgq-0001pY-Ph == XXXX@mail.ru R=dnslookup T=remote_smtp defer (-46): SMTP error from remote mail server after end of data: host mxs.mail.ru [194.67.23.20]: 421 Please try again later
врядли у mail.ru трабла

Corwin, 2008-01-13 в 12:50:08

Я думаю можно и мне написать. В общем, это касается тех, у кого идёт задержка при отправлении почты. Список  (блэк-лист), который представлен в этом конфиге рабочий, однако, однако доступность этих серверов может быть затруднительной. Вероятно сервера загружены или на вашем провайдере глючит DNS. У моего провайдера, к примеру, нет доступа к домену .gov и ещё некоторым. Плюс доступ к некоторым настолько долгий, что почта уходила около минуты, а то и больше. В общем, я попросту убрал один из серверов и почта начала уходить махом, при этом  в логах теперь, идёт уведомление о том, что действительно, какие-то письма отбрасываются с помощью этих серверов. При этом мне пришлось переместить записи в конфиге повыше, сразу же после проверки о том, откуда посылается почта (adsl, pool и т д).

jahfar, 2008-02-05 в 11:26:27

Daemony, 2006-12-10 в 16:26:55

Есть одно замечание:

В dovecot-sgl.conf используется тип авторизации PLAIN.
В /usr/local/www/postfixadmin/config.inc.php стоит по умолчанию

$CONF['encrypt'] = 'md5crypt';

Так вот, с такой постановой, при добавлении пользователей через веб-интерфейс, нифига работать не будет - Dovecot ругается на ошибки авторизации. У меня по крайней мере не заработало (ковырялся два часа :( ....)

а в логах одна хрень:

dovecot: pop3-login: Disconnected: user=<admin@myhost.org>, method=PLAIN, rip=bla.bla.bla.bla, lip=bla.bla.bla.bla, TLS

Проблема решилась так:
Нужно исправить postfixadmin/config.inc.php:

$CONF['encrypt'] = 'cleartext';

Правда в этом случае в MySQL пароли будут лежать в чистом виде, а нас это конечно не устраивает:

Поэтому в dovecot-sgl.conf пишем

default_pass_scheme = MD5

Авторизация проходит. Пароль пользователя в базе лежит в виде md5 хеша.

------------------

А вообще Lissyara спасибо тебе большое за труд.
Давно искал нормальный перевод конфига dovecot. Нашел его на твоем сайте. :)

Gruber, 2007-04-26 в 15:38:50

Небольшая поправочка:
Daemony  писал -
Поэтому в dovecot-sgl.conf пишем
default_pass_scheme = MD5
в новой версии dovecot нужно писать MD5-CRYPT
иначе ошибка остаётся


В любом случае не проходит, пишет одно и тоже:
dovecot: pop3-login: Disconnected: user=<admin@myhost.org>, method=PLAIN, rip=bla.bla.bla.bla, lip=bla.bla.bla.bla

-=N.K=-, 2008-02-05 в 19:54:54

Ага, всё то хорошо, тока вот Outlook твой md5 вообще не  понимает и фиг с него почту почитаешь;) Так что тока cleartext везде:)

jahfar, 2008-02-06 в 15:35:46

всё вроде настроил на тестовой машине,но при отправлении говорит вот что:
Feb  6 14:26:50 test05 exim[39545]: 2008-02-06 14:26:50 H=(pasha) [192.168.xx.xx] sender verify fail for <test@test.com>: Unrouteable address
Feb  6 14:26:50 srv05 exim[39545]: 2008-02-06 14:26:50 H=(pasha) [192.168.xx.xx] F=<test@srv05.lesk.ru> rejected RCPT <test@test.com>: Sender verify failed


в чём заморочка может быть?

Ice, 2008-02-09 в 13:09:23

Респект за статью!

EKrava, 2008-02-13 в 18:50:39

если не поправить в postfixadmin/vacation.php
то оно "немного" корежит таблицу alias
изменяя user@domain.tld на user@domain.tld,user@autoreply.domain.tld
иза чего exim материться.
закомментил UPDATE alias в vacation.php, и все заработало.
ну и в базу vacation message на русском языке ложится уже в покорежном виде после escape_string,
пришлось чуть чуть подравить vacation_autoreply
acation_autoreply:
   driver = autoreply
   headers = "Content-Transfer-Encoding: base64 \nContent-Type: text/plain; charset=koi8-r \nMIME-Version:1.0"
   once = /var/mail/vacation/$local_part@$domain
   once_repeat = 2m
   user = mail
   group = mail
   to = ${sender_address}
   from = "${local_part}@${domain}"
   log = /var/log/exim4/vacation.log
   subject = "Auto Reply from ${local_part}@${domain}"
   text = ${lookup mysql {SELECT body FROM vacation WHERE email='${quote_mysql:$local_part@$domain}'}{$value}}
===
добавив вот такой вот headers - оно работает.
и в базу руками положить кусок тексту в koi8-r кодированный в base64
тогда письмо получается вполне читабельным, и на русском языке


жаль PHP не владею в достаточной мере, чтоб переписать vacation.php
на предмет того чтоб оно русский текст кодировало в base64, и в таком виде ложило в базу.

omega, 2008-02-19 в 18:56:19

Люди а кто пробовал мигрировать с dbmail на dovecot? и как можно перенести пользователей с тестовой машины на рабочий сервер?

lissyara, 2008-02-19 в 19:37:31

ссылка в этом же разделе
http://www.lissyara.su/?id=1195

кое, 2008-03-04 в 12:21:48

Извеняюсь.. Но как прикрутить postfixadmin к apache?? Что хотя бы устанавливать нужно? Установил php5, apache13 и postfixadmin... но что дальше делать??

HunTeR, 2008-03-05 в 8:44:15

Установи в hhtpd.conf :))
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin">
  Options Indexes FollowSymlinks MultiViews
  AllowOverride AuthConfig
allow from 192.168.0.0/255.255.255.0
deny from all
</Directory>

HunTeR, 2008-03-05 в 8:44:29

Установи в httpd.conf :))
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin">
  Options Indexes FollowSymlinks MultiViews
  AllowOverride AuthConfig
allow from 192.168.0.0/255.255.255.0
deny from all
</Directory>

koe, 2008-03-05 в 19:07:18

HunTeR. Спасибо, все запустилось. Но криво работает, то там то сям... вылезают какие то проблемы. Я так понимаю, без знания MySQL и apache почтовик нормально не поднять. Буду пытаться сростить exim с dovecot без MySQL и прочих довесков.

ashgdw, 2008-03-07 в 12:04:12

Товарищщи! Подскажите, чем dovecot deliver лучше если exim будет сам складывать почту в папочку??? Например таким образом(роутер):
dovecot_user:
 driver = appendfile
 user = dovecot
 group = dovecot
 mode = 0600
 directory=/home/dovecot/users/${lc:$local_part}/
 maildir_format = true
 mode_fail_narrower = false
 envelope_to_add = true
 return_path_add = true

jahfar, 2008-03-11 в 10:35:35

Возможно ли ограничить некоторых пользователей доставко почты только внутри локального домена?

ashgdw, 2008-03-17 в 15:07:07

Насколько необходим кондишн в dovecot_router, если используется dovecot deliver?
Я так понял, что dovecot deliver сам смотрит пользователей в базе и если есть нужный, то складывает почту.. иначе он дает отлуп.. или нет?

VVEBER, 2008-03-25 в 11:49:17

Спасибо, очень полезная статья. Сделал, как описано, немного потоптался по граблям :) и всё заработало )

Morty, 2008-03-27 в 23:24:56

в dovecot-1.0.13 заметил такую вещ - при рестарте довекота пишет : "mail_extra_groups setting was often used insecurely so it is now deprecated, use mail_access_groups or mail_privileged_group instead" Перезапускается, работает, но просит заменить строчку (ссылаясь на безопасность):
mail_extra_groups = mail на
mail_privileged_group = mail
либо
mail_access_groups = mail

MAPTbIH, 2008-03-31 в 10:43:26

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

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

barsykoff, 2008-04-17 в 17:20:53

>Началось всё с того, что подсказали мне MUA с богатыми возможностями

Только, наверное, MDA (Mail Delivery Agent), а не MUA ;)

miful, 2008-05-07 в 8:20:06

в экзиме в статье написано что если пользователь указал лишь имя - то прикрутить ему доменное имя по умолчанию какое то. Однако, когда забираешь через давкеот почту - требует не имя пользователя а полное имя пользователя типа  xx@xx.xx а было бы неплохо если так же было и здесь - не указал полное имя пользователя - чтобы до полного имени тоже брало по-умолчанию какое то определенно еимя

miful, 2008-05-16 в 7:25:21

А если несколько доменов, то хранение почты лучше сделать в таком виде
/var/mail/exim/<имя домена>/xxx@<имя домена>
вопрос только как правильно это сделать

cj_nik, 2008-05-30 в 15:27:13

>>
# Убираем собственную временную метку exim`a из логов, её ставит
# сам syslogd - нефига дублировать
syslog_timestamp = no
<<

Ну можно и оставить, если не напрягает двойная дата, в разных форматах и нужна поддержка eximstat.

cj_nik, 2008-05-30 в 15:29:54

Пардон
eximstats

FenX, 2008-06-16 в 2:22:22

Не могу понять, это так и надо, или очепятка?
Ибо как я понял (доков особо не читал), в этой строке устанавливается текущий юзер...
А здесь значение вообще (по-моему) пустое получается...

Или я не прав? Оо

auth_cram_md5:
 ....
 server_set_id = $auth2

Pr0x1ndei, 2008-06-26 в 8:00:38

Лисяра большущее спасибо за статью :) долго читал ибо многа букаф но понял всё что хотел и даже больше, такой вопрос
в некоторых блеклистах типо relays.ordb.org присутствуют извесные сервера типо google.com, yandex.ru, rambler.ru
хотелосьбы создать whitelist

accept condition     = ${lookup{$sender_host_address} \
                       wildlsearch{/usr/local/etc/exim/db/whitelist.txt} \
                       {yes}{no}}

это должно выглядеть так или я чтото забыл или пропустил ???

sergio, 2008-08-05 в 17:01:55

При обновлении dovecot до dovecot-1.1.2_1  возникла ошибка:
Error in configuration file /usr/local/etc/dovecot.conf line 254: Unknown setting: default_mail_env

Причина: поменялся синтаксис директив

Решение : default_mail_env заменить на mail_location

Прошу автора поправить в статье!

Tech, 2008-08-06 в 12:23:09

Хотел на FreeBSD 7 поднять все это дело, но не сложилось с рейдом: адаптековский asr падал поcтоянно, аналогично как и gmirror. Времени думать долго не было и пришлось лепить с г..на конфту (железо старое) в ускоренном темпе. Поставил Debian etch - и сконфигуировал там md. Пока вроде держится. Но я не об этом...
Поскольку постфиксадмин хранить данные в $CONF['encrypt'] = 'md5crypt'; а хранить в открытом виде как бы не особо и хотелось бы, плюс ко всему проверка логина/пароля на поп3 идет через dovecot, то почему бы не попользоваться им и для smtp auth ?

вот что получается у меня.
postfixadmin/config.inc.php
...
$CONF['encrypt'] = 'md5crypt';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

/etc/dovecot/dovecot-sql.conf
...
default_pass_scheme = MD5
password_query = SELECT `username` as `user`,`password` FROM `mailbox` WHERE `username`='%n@%d' AND `active`='1'

user_query = SELECT `maildir` AS `home`, 102 AS `uid`, 104 AS `gid` FROM `mailbox` WHERE `username`='%n@%d' AND `active`='1'

102,104 - это дефолтный дебиановские Debian-exim. решил поставить их т.к. после апдейта или других манипуляций оно все права на спул и логи exim'a ставит в Debian-exim, вобщем не удобно что-то другое ставить.
соответсвенно, меняем чуток /etc/dovecot/dovecot.conf
...
 socket listen {
   master {
     path = /var/run/dovecot/auth-master
     mode = 0600
     user = Debian-exim
     #group = Debian-exim
   }
   client {
     path = /var/run/dovecot/auth-client
     mode = 0660
     user = Debian-exim
     #group = Debian-exim
   }
 }

ну и exim4.conf:
exim_user = Debian-exim
exim_group = Debian-exim
...
dovecot_delivery:
   driver = pipe
   command = /usr/lib/dovecot/deliver -d $local_part@$domain
   message_prefix =
   message_suffix =
   delivery_date_add
   envelope_to_add
   return_path_add
   log_output
   user = Debian-exim
...
auth_plain:
   driver = dovecot
   public_name = PLAIN
   server_socket = /var/run/dovecot/auth-client
   server_set_id = $auth1

auth_login:
   driver = dovecot
   public_name = LOGIN
   server_socket = /var/run/dovecot/auth-client
   server_set_id = $auth1

отмечу также что для нормальной работы dovecot_delivery мне пришлось на dovecot.conf и dovecot-sql.conf поставить группой Debian-exim и дать право на чтение, а то по-дефолту шло -rw-----—  1 root root и доставка не работала а в логе exim'a шли матюки на пермишены файла dovecot.conf
Также нужно поставить права на mail_location как Debian-exim:Debian-exim ну или какие там у вас узеры и группы.

Надеюсь, кому-то это будет полезным. Если что не так (может где глупости делаю) - поправьте меня плиз.

playnet, 2008-08-07 в 20:13:45

При создании мускуль базы я сделал проще, без правки системной базы:
grant all on mail.* to mail@localhost identified by 'mail';

Грамматика опять хромает, вордом проверил бы :) Кстати, в ООо проверка грамматики есть (вспоминая давний разговор).
И еще.. у тебя на сайте бага, если ФФ упал (3 это любит), часть страниц пытается открыться как octet-stream и больше эту страницу не открыть, она висит как "пустая". Пофикси плиз.

Tchk, 2008-08-26 в 17:50:55

если в постфиксадмине при добавлении ящика говорит "неверное имя", то проверку мона отключить так:
/usr/local/www/postfixadmin/config.inc.php
$CONF['emailcheck_resolve_domain']='NO';
(проблема вызвана желанием начальства параллельно настраивать сервер и регистрировать домен)

gavryuha, 2008-08-30 в 19:57:47

А тут condition разве правильный??
Помоему это копипаст из строки выше (system aliases)
С таким условием выдаёт Unrouteable address
<u>ГЛЮКИ!</u>


# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
 driver = accept
 condition = ${lookup mysql{SELECT `goto` FROM \
 `alias` WHERE \
 `address`='${quote_mysql:$local_part@$domain}' OR \
 `address`='${quote_mysql:@$domain}'}{yes}{no}}
 transport = dovecot_delivery

bayun, 2008-10-17 в 17:32:39

Не сталкивался до этого ни с exim ни c dovecot (откровенно говоря с почтовыми серверами сталкивался мало - по мере необходимости, а она возникала очень редко ;-)). Попробовал.В основном получилось (SMTP и POP 3 есть все проверяется как через клиент так и по tlnet).Не работает почему-то dovecot_delivery transport (не запускается с кодом ошибки 75), но я на форумах обнаружил, что данная проблема возникала не только у меня , так что думаю я ее победю ( или побежду Ж-)). А если серьезно - спасибо. По крайней мере в следующий раз уже без проблем смогу установить и отладить почту (правда когда разберусь с ошибкой LDA) :-)
Еще раз спасибо и желаю удачи.

mult, 2008-10-20 в 19:40:39

спасибо за статью, настроил сее почту именно таким образом и все раотает. но вот с trash - проблема )-;

ProFTP, 2008-12-07 в 20:04:04

аналог Postfxadmin

goto http://forum.lissyara.su/viewtopic.php?f=20&t=12348

Захаров Дмитрий, 2008-12-10 в 22:54:42

lissyara
Спасибо Вам за Ваши труды! пусть все у Вас всегда получается!

Sava, 2009-01-03 в 16:55:25

Спасибо, все завелось практически без напильника.
Тов. Лису огромное спасибо, но есть не то просьба, не то пожелание - неочевидные вещи хотя-бы раз в статье дохочдиво коментировать. Например структура АЦЛины. Не читая мануала синтаксис не очевиден.
И второе по теме. Видели у пофигс-одмина при создании домена галку "Резервный МХ". Так вот чтоб EXIM мог быть Backup MX то надо немножко исправить запрос
domainlist local_domains = ${lookup mysql{SELECT `domain` \
                           FROM `domain` WHERE \
                           `domain`='${domain}' AND \
                           `active`='1'}}


и дописать туда "AND `backupmx` = '0'"
Тогда почта приходящая на EXIM в случае падения основного МХ не будет пробовать доставиться локально, а будет висеть в очереди и раз в приблизительно 30 минут пытаться уходить на основной МХ. Время и интервалы повторов отправки не поборол.
Если мы в блоке retry попробуем прописать

# Address or Domain  Error   Retries
# ---------------—  ---—   -------
domain.tld           *       F,10h,1m
*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h
Что по мануалу значит "для любых ошибок домена domain.tld повторять отправку с фиксированным (F) инетрвалом в 1мин на протяжении 10 часов" то через 1-2 минуты он нифига не пробует повторить самостоятельно. Зато легко повторяет после его перезагрузки (а не ругается что retry интервал еще не наступил) что значит что 10h,1m все-же работает. А вот если его не трогать, то сам он одумывается приблизительно через 30 минут и успешно доставляет отложенную почту на оживший первый МХ. Кожет кто-то знает в чем загвоздка?


lissyara, 2009-01-03 в 17:07:14

Э, нет. Мануал всё равно читать надо - его чтения не отменяет никакое how-to. Иначе всё вернётся к винде - когда упало и незнаешь причин - лезешь искать очередной мануал. И так до бесконечности.
Лучше один раз прочесть доку.

Sava, 2009-01-03 в 17:46:54

Само собой. Но природа человека такова, что хочется всего и сразу. Кроме того существуют психологические барьеры: - мануал большой, информационная нагрузка не позволяет выделить сразу ту часть, которая необходима для "стандартной задачи". Т.к мануал - это справочник. А статья, особенно написанная грамотным дядькой дает единовременно общее понимание о системе. А дальше, когда уже вырисовались некоторые основы мануал читается и понимается на ура. И чет мне кажется что не я один такой. Так что спасибо тов. Лис за твои труды.

lissyara, 2009-01-03 в 17:58:29

Ну... Согласен =)
Но из собственного опыта - когда дошёл сам - гораздо лучше в память врезается, и куда доходчивей.

Константин, 2009-01-22 в 14:29:22

такая же беда как у john
dovecot: auth-worker(default): sql(john,10.100.1.100): query: SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = 'john@' AND `active`='1'

Вместо пустого параметра %d (где должен подставляться домен) написал сам домен ручками, теперь авторизуется. но это не правильно... у кого есть решение?

password_query = SELECT `username` as `user`, `password` FROM  \
`mailbox` WHERE `username` = '%n@mydomen.ru' AND `active`='1'

lissyara, 2009-01-22 в 14:36:50

Ребят, давайте в форум по проблемам.
Итак больше сотни камментов налепили к статье =)))
=======
по факту - у меня работает, именно в таком виде. Прямо щас.

fxpester, 2009-01-28 в 16:21:46

Константин, http://forum.lissyara.su/viewtopic.php?f=20&t=11384&start=0

Starsh, 2009-02-10 в 18:14:24

HELP!!!!
Сделал всё как написано в статье! Статья просто БОМБА! Но есть проблема и не знаю как её обойти!!
------------------------------------
Лог regectlog пример:
2009-02-10 16:45:27 H=(fr-end-02.iptelecom.net.ua) [213.159.224.232] I=[ххх.ххх.ххх.ххх]:25 F=<> rejected RCPT <star@temp.kiev.ua>: "А какого HELO пустое?! Не по RFC..."
В теле письма :
550 Sender verify failed
Это происходит с некоторыми хостами, не со всеми. Я как понял, есть проверка моих пользователе, а в этой конфе ексима этого нет! Подскажите как и где это исправить??? У меня 10 дней полёта, а результат 0.

Starsh, 2009-02-10 в 18:17:01

HELP!!!!
Сделал всё как написано в статье! Статья просто БОМБА! Но есть проблема и не знаю как её обойти!!
------------------------------------
Лог regectlog пример:
2009-02-10 16:45:27 H=(fr-end-02.iptelecom.net.ua) [213.159.224.232] I=[ххх.ххх.ххх.ххх]:25 F=<> rejected RCPT <star@temp.kiev.ua>: "А какого HELO пустое?! Не по RFC..."
В теле письма :
550 Sender verify failed
Это происходит с некоторыми хостами, не со всеми. Я как понял, есть проверка моих пользователе, а в этой конфе ексима этого нет! Подскажите как и где это исправить??? У меня 10 дней полёта, а результат 0.

alex, 2009-02-19 в 13:10:11

мозги набекрень, при вводе логина и пароля в postfixadmin пишет неправильное имя и пароль, где копать?

alex, 2009-02-19 в 14:16:51

пока ждал ответа вроде разобрался, тут другие грабли , постоянно денаить пользователя exim
DEBUG INFORMATION:
Connect: Access denied for user 'exim'@'localhost' (using password: YES)

Please check the documentation and website for more information.

Alive, 2009-02-19 в 17:34:05

Не флуди. Человеческим языком написано что юзер не подходит или пароль.

Max, 2009-03-04 в 14:41:58

Понятно автоответчик (без БД) здесь
http://wiki.exim.org/EximAutoReply

irr, 2009-03-07 в 8:25:23

Огромное спасибо за статью!
Предлагаю внести поправку: раз уж мы собираем exim с опцией
LOG_FILE_PATH?=         syslog
целесообразно дописать в конфиг
write_rejectlog = false
чтобы избежать дублей отфутболенных сообщений в maillog.

Gillian, 2009-03-21 в 1:54:07

в статье уважаемого lissyara допущена оплошность из-за которой мозги ВСТАЛИ блин, при сборки dovecot ОБЯЗАТЕЛЬНО указываеться опция LDAP , если её пропустить в /usr/local/libexec/dovecot - можете забыть о delivery и делать свои мозги ракообразными, у меня ВСЕ млять после трех дней такого кайфа ( еще clamd - не забывайте) мозги встали, но работает как часы
конфиг самомго clamav указывал на clamd.sock, конфиг exima на clamd , подправить конфиги

redkid, 2009-05-05 в 9:30:57

Релиз 7.1 точный копипаст конфигов, получение почты работает отлично и доставка писем из внешнего мира тоже, но вот отправка писем на сервер не работае ни в какую, причем что странно в логах ничего нет, почтовый клиент матерится о невозможности подключиться к серверу!

Luser, 2009-07-01 в 9:19:33

Получилось сделать авторизацию для отправки
dovecot.conf:
auth default {
mechanisms plain login
}
dovecot-sql.conf:
default-pass-scheme MD5
# Для CRAM-MD5 выдает такое:
Error: auth-worker(default): sql(test@mydomain.ru,10.10.10.15): Password in passdb is not in expected scheme CRAM-MD5

postfixadmin, config.inc.php:
$CONF['encrypt'] = 'md5crypt';

Пароли хранятся в MySql-базе в шифрованном виде

Drema, 2009-09-23 в 3:19:49

Делал по статье, dovecot 1.2.4, обнаружились следующие грабли:
в логе: dovecot: pop3-login: Internal login failure (auth failed, 1 attempts)
Лечится изменением запроса в dovecot-sql.conf:
user_query = SELECT CONCAT('/var/mail/exim/',maildir) AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

Seltsam, 2009-10-20 в 19:28:17

Как обычно - хвала и благодарности статье =)
Вопрос только такой - права и владельцы на каталог /var/mail/exim/ какие, по дефолту?

karpekin, 2009-12-17 в 11:02:22

Делаю:/usr/local/etc/rc.d/dovecot start
Пишет:Unknown setting: umask
Наверное эта переменная для старого dovecot-a?

daggerok, 2009-12-24 в 13:53:20

># Этот кусок я не трогал. Думаю разработчики лучше знают,
># какие тут должны быть цифирьки. Если же вы это знаете
># лучше их - меняйте. Хотя... А какого, если Вы такой
># умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
># Address or Domain  Error   Retries
># ---------------—  ---—   -------
>*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h

эти цифирьки указывают интервалы времени на протяжении которых будут производиться попытки отправить письма повторно

# Domain Error Retry     Then      Finaly
 *      *     F,2h,10m; F,24h,1h; F,4d,6h

# Retry - every 10 mins for 2 hours
# Then - every hour for 24 hours
# Finally - every 6 hours for 4 days

Abibas, 2009-12-30 в 17:59:19

Думаю что роутер dovecot_user наверное лучше бы выглядел так:
condition = ${lookup mysql{SELECT `username` FROM \
           `mailbox` WHERE \
           `active`='1' AND \
        `username`='${quote_mysql:$local_part@$domain}' OR \
           `username`='${quote_mysql:@$domain}'}{yes}{no}}

Так, как морда postfixadmin активирует юзерей именно в этой таблице.

v_d_v, 2010-01-12 в 0:24:42

Для Exim 4.71 нашелся такой баг: при отправке наружу с SMTP авторизацией уходят письма со следующими заголовками: MAIL FROM:"mailbox@domain.tld"@hostname.com.
Если отправлять письма с локальных сетей без SMTP авторизации, то заголовки правильные.

v_d_v, 2010-01-12 в 0:57:25

Упустил, в новом конфиге Exima
#control = submission

макс, 2010-04-26 в 11:47:10

Как попасть в постфиксадми какие там логин и пароль? Ведь еще не один пользователь не создан?

baton4eg., 2010-04-27 в 13:13:02

http://site.ru/postfixadmin/setup.php

Morty, 2010-07-07 в 16:34:45

dovec-sql:
password_query = SELECT password FROM mailbox WHERE username = \'%n@%d\' AND `active`=\'1\'
user_query = SELECT CONCAT(\'/var/mail/exim/\',maildir) AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = \'%n@%d\' AND `active`=\'1\'
-----

maxsubzero, 2010-07-24 в 11:51:06

Спасибо за статью! С небольшой переделкой на использование Dovecot LDA (по их же вики) для доставки на виртуальные домены всё заработало с полоборота!
Спасибо, Лис, за труд и за такой хороший сайт по Фре :)

uriinf, 2010-07-29 в 16:51:10

# Рубаем тех, кто не пишет отправителя
#  deny    condition     = ${if eq{$sender_address}{}{yes}{no}}
#          hosts         = !127.0.0.1 : !localhost : *
#          message       = "А какого HELO пустое?! Не по RFC..."

## Рубаем тех, кто не пишет отправителя (пробел)
#  deny    condition     = ${if match{$sender_address}{\N^\s+$\N}{yes}{no}}
#          hosts         = !127.0.0.1 : !localhost : *
#          message       = "А какого HELO пустое (тока пробелы)?! Не по RFC..."

Разве тут вместо $sender_address не $sender_helo_name должно стоять?

Mikola, 2010-08-03 в 14:32:55

если у кого в начале косяк с установкой - по прилагаемым лиссярой дампам пользователю exim не хватает прав на две команды CREATE и ALTER.

было:
— БД: `exim`
GRANT SELECT, INSERT, DELETE, UPDATE ON exim.* TO exim@localhost;

надо:
GRANT SELECT, INSERT, DELETE, UPDATE, CREATE, ALTER ON exim.* TO exim@localhost;

может потому что MySQL 5.0

blitzkrieg, 2010-09-29 в 17:32:31

# Рубаем тех, кто не пишет отправителя
#  deny    condition     = ${if eq{$sender_address}{}{yes}{no}}
#          hosts         = !127.0.0.1 : !localhost : *
#          message       = "А какого HELO пустое?! Не по RFC..."

Если речь идет именно о $sender_address то данное acl нарушает RFC :-)
Сервер должен принимать почту с пустым отправителем. Читать тут: http://www.rfc-ignorant.org/policy-dsn.php

Alex Keda, 2010-09-29 в 21:02:52

ничё что оно закомментировано?

blitzkrieg, 2010-09-29 в 21:53:01

Это не так важно, правило есть в том виде в котором оно тут представлено. Более того у многих тех, кто будет пользоваться данной статьей возникнет непреодолимое желание его раскомментировать, так как оно вполне соответствует логике. Тот кто прочитает комментарии может избавить себя от ненужных возможных проблем с проверкой отправителя на сторонних серверах и попаданием в лист.

Саша, 2010-11-30 в 10:12:04

В начале показано как искать в портах и потом сразу запуск make..., а хорошо бы перейти в нужную директорию! Мало ли, юные админы в /usr/ports запустят make и будут ждать.. ;)

daggerok, 2010-11-30 в 10:40:47

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

adre, 2010-11-30 в 12:09:55

[code]dovecot --version
1.2.14
[/code]
Проколупался с кубом по поводу listen * - это не есть локал хост, localhost - это Listen:localhost,*

salimk, 2011-09-07 в 11:35:11

Всем привет,
я пользуюсь dovecot+postfix+postfixadmin, и мне нужно было сделать так, чтобы у каждого почтового ящика был свой id (не статичный),
расскажу как я сделал:
в таблицу mailbox (mysql), добавил 2 поля
Имя: u_id и g_id
тип данных: int
Ширина типа: 11

затем в create-mailbox.php:
над строкой 219 добавляем:
$genid=mt_rand(1000,2000); # диапазон от 1000 до 2000

после меняем сторку
$result = db_query ("INSERT INTO $table_mailbox ....
на
$result = db_query ("INSERT INTO $table_mailbox (username,password,name,maildir,local_part,quota,domain,created,modified,active,u_id,g_id) VALUES ('$fUsername','$password','$fName','$maildir','$local_part','$quota','$fDomain',NOW(),NOW(),'$sqlActive','$genid','$genid')");

В Postfix main.cf
virtual_uid_maps = mysql:$config_directory/uid.cf
virtual_gid_maps = mysql:$config_directory/gid.cf

в uid.cf:
host = unix:/tmp/mysql.sock
user = postfix
password = mysecret
dbname = mail
table = mailbox
select_field = u_id
where_field = username

в gid.cf

host = unix:/tmp/mysql.sock
user = postfix
password = mysecret
dbname = mail
table = mailbox
select_field = g_id
where_field = username

для dovecot

first_valid_uid = 1000
last_valid_uid = 2000
first_valid_gid = 1000
last_valid_gid = 2000

dovecot-sql.conf:
.....
user_query = SELECT u_id AS uid, g_id AS gid FROM mailbox WHERE username = '%n@%d' AND active='1'

Salimk, 2011-09-29 в 7:31:21

Вот еще одна фичя
в config.inc.php:

.............

$username=$_POST['fName'];
$secretpass=$_POST['fPassword'];
$milo=$_POST['fUsername'];
$domen=$_POST['fDomain'];

// Welcome Message
// This message is send to every newly created mailbox.
// Change the text between EOM.
$CONF['welcome_text'] = <<<EOM

Здравствуйте уважаемый(ая) $username

Добро пожаловать в домен $domen!

Вы можете просматривать вашу почту с помощью веб-браузера, для этого перейдите по ссылки http://mail.$domen , и введите в графе:

Имя пользователя: $milo

Пароль: $secretpass

С Уважением администрация домена $domen

EOM;

.....

massacrer, 2011-12-01 в 13:02:00

Спасибо Лисяре за материал. Около полугода пользовал во FreeBSD, немного доработал и был доволен, но недавно сервер приказал долго жить и пришлось купить новый. Решил отказаться от FreeBSD в пользу Ubuntu так как с ней мне работать комфортнее. При миграции конфигов возникли некоторые сложности, о которых хочу рассказать.
Особенности для Ubuntu 11.10. Программы ставим так:
# sudo apt-get install mysql-server mysql-client exim4-daemon-heavy dovecot-imapd dovecot-pop3d dovecot-mysql spamassassin
Dovecot встанет 2-й и при запуске предложит переработать конфиг. Не помню уже какой командой, но он выводит ее на экран. uid, от которого идет обращение к папкам и файлам с почтой, можно подправить в /etc/dovecot/dovecot-sql.conf (я переносил готовые конфиги, а потому совсем про это забыл).
С Exim хлопот немного больше. Для начала нужно дописать в начале /etc/exim4/update-exim4.conf.conf строку: dc_eximconfig_configtype=none и далее работать с /etc/exim4/exim4.conf. Может потребоваться рихтовка, так что см. логи. Если обращение к логам Exim'a будет идти не от пользователя Debian-exim, то нужно подставить нужного в /etc/logrotate.d/exim4-*
Вроде бы все. Извините, если что-то упустил.

Lol, 2011-12-21 в 9:08:03

Спасибо много букф аффтор жоот иду искать проще статью

i4iro, 2012-03-15 в 5:44:14

куда проще

i4iro, 2012-03-15 в 5:44:16

куда проще

i4iro, 2012-03-19 в 3:40:20

2 massacrer
ЕРЕТИК
на костер его :)

Demon, 2013-02-07 в 18:47:28

MySQL 5.5
TYPE=MyISAM
меняем на
ENGINE=MyISAM

Дмитрий, 2020-07-21 в 13:20:41

  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
         condition     = ${if match{$sender_host_name} \
                              {adsl|dialup|pool|peer|dhcp} \
                              {yes}{no}}

А письма от glavpooltorg.su тоже будут блокироваться?


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs

Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD

Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC

Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat

Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot

Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless

Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение

Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга

Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP

Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network

Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem

В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID

Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN

Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS

В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL

Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)

Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external

mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid

Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6

Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD

Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc

Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-18, Andy
Free-SA

Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server

Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование

Установка VPN сервера mpd5 + сжатие и шифрование
2009-01-26, vp
freebsd + webcamera

Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
2009-01-10, Grishun_U_S
конфиг для офисов

В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
2008-12-27, Storoge
sftp+chroot

Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
2008-12-13, Morty
PurefFTPd

Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
2008-12-11, lissyara
termlog

Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
2008-11-26, Cancer
SQUID+SAMS +Rejik-(ADLDAP)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-11-22, dvg_lab
php5-oci8

Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
2008-11-21, m0ps
NTP

Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
2008-11-20, Cancer
SQUID+SAMS +Rejik-(NTLM)

Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
2008-11-20, UA
Hotspot

Настройка безпроводной точки доступа (WiFi) на freebsd
2008-11-12, Shaman
Enemy Territory

Появилась у меня такое желание поднять сервер Enemy Territory. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
2008-11-11, lissyara
Samba+ NT ACL

Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
2008-11-11, Raven2000
Upgrading OpenBSD

Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
2008-11-10, lexy
SMSTools 3

Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
2008-11-06, Cancer
Asterisk IP PBX

Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
2008-10-30, atrium
Samba & CUPS & AD & ACL

Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
2008-10-17, Raven2000
src & ports

Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
2008-10-13, Morty
Mysql - базовое описание

Базовое описание и принципы работы с MySQL
2008-10-10, Cancer
exim&dovecot + fetchmail + SSL

Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay С возможностью отправлять письма через смтп релей провайдера. С использование SSL шифрование: POP3s IMAPs sSMTP
2008-10-09, m0ps
Дополнительные порты для роутера

Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
2008-10-06, princeps
Bacula

Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
2008-10-02, zheromo
Postfix + DBMail

Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
2008-10-02, Cancer
SugarForge CRM

SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
2008-09-12, arksu
ng_ipacct + squid

Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
2008-09-03, Raven2000
GLPI

Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
2008-09-03, salimk
POWERDNS

Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
2008-09-03, DNK
Rinetd

Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
2008-09-03, L!Ner
eGroupWare

Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
2008-08-30, jafff
MAC адрес

У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
2008-08-30, Morty
clonehdd

Перенесение, бэкапирование HDD,легко и просто
2008-07-31, Raven2000
Proxy Auto Configuration

Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
2008-07-29, f0s
NNTP сервер

Конфигурирование собственного NNTP-сервера.
2008-07-28, Al
spamooborona

настройка yandex spamooborona в качестве smtp-proxy для работы с exim
2008-07-28, Cancer
SQUID+SAMS +Rejik-(NCSA)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-07-20, Raven2000
Pax

Эта замечательная утилита поставляется с FreeBSD по умолчанию, и она имеет неплохой потенциал. Можно создавать архивы модифицировать их, а так же живьем переносить всю операционную систему с данными
2008-07-16, Andy2k
BIND & AD

Настройка BIND для обслуживания запросов контроллеров Active Directory. Альтернатива поднятию DNS от Microsoft.
2008-07-16, aleksey.kravchenko
Samba (PDC+BDC)

Поднять главный (офис) и резервный (филиал) контроллер домена на базе Samba и OpenLDAP, организовать синхронизацию и репликацию между ними. Запись в LDAP должена выполняться только на PDC.
2008-07-14, aleksey.kravchenko
OpenVPN + LDAP

Статья о том, как настроить OpenVPN с авторизацией пользователей в OpenLDAP.
2008-07-14, aleksey.kravchenko
ProFTPd + LDAP

ProFTPd с авторизацией пользователей в OpenLDAP
2008-07-13, lissyara
Asus Eee PC

Дали на несколько дней поиграться Asus Eee PC - мелкий ноутбок по смешной цене. Ну, первым делом ставим правильный ОС и смотрим - что из этого получиться.
2008-07-09, terminus
DNS сервер Unbound

Установка и настройка кеширующего DNS сервера Unbound под управлением FreeBSD 7.0
2008-07-08, f0s
mozilla autoconfig

Автонастройка браузера и почты Mozilla Seamonkey пользователям
2008-07-05, lissyara
iftop

Утилита предназначена для мониторинга загрузки канала в режиме реального времени - позволяет видеть кто именно занял полосу. Полезно для организаций с FreeBSD на шлюзовой машине.
2008-07-02, manefesto
snd_hda

Патчим snd_hda для корректной работы с наушниками
2008-06-27, Grishun_U_S
dd : бэкапируем windows

Клонирование разделов windows с помощью загрузочного диска FreeBSD
2008-06-25, terminus
DNS сервер NSD

Установка и настройка авторитарного DNS сервера NSD под управлением FreeBSD 7.0
2008-06-17, Al
NetXtreme BCM5722

Драйвер для сетевой карты NetXtreme BCM5722 Gigabit Ethernet
2008-06-15, tango
Amanda

Установка и настройка сервера резервного копирования Amanda на FreeBSD.
2008-06-12, LMik
Виртуальный свитч

Статья описывает создание виртуального коммутатора для соединения удаленных физических ethernet сетей.
2008-06-08, littlesavage
SiS*Mirage*1 на D201GLY2

Как заставить работать видеоrарту SiS*Mirage*1 на материнской D201GLY2
2008-06-06, nsand
Рыбалка на FreeBSD

Стьатья о том как настроить рыбалку со спутника под FreeBSD
2008-06-06, nsand
TT budget S-1401

Настройка драйвера ttbudget (SkyStar3) под FreeBSD
2008-05-30, Andy2k
NOD32 mirror

Скрипт для создания зеркала обновлений для антивируса NOD. Автоматически ищет нужные логин-пароль для получения обновлений. В теории не требует обслуживания.
2008-05-25, Romzes
метаданные exif

Пример сортировки фотографий сделаных разными фотоаппаратами, с разными названиями, датами создания/модификации. Из под консоли, конечно.
2008-05-23, FenX
svn+apache+trac

Установка связки Apache2.2 + Subversion + Trac (Установка и настройка SVN сервера с доступом к репозиториям по http протоколу)
2008-05-22, Grishun_U_S
простой конфиг PF

В статье разбирается простой конфигурационный файл pf "изнутри можно все"
2008-05-20, KrivoSoft
HAVP

HAVP(HTTP AntiVirus proxy)- работает как http прокси, проверяющий файлики используя LibClamav. В заметке описан процес прикручивания антивируса к уже работающему прокси серверу squid.
2008-05-20, Covax
ALTQ в IPFW

Исполльзование ALTQ вместе с IPFW
2008-05-19, nonalog2007
pppoe

Настройка ADSL-модема для подключения к Интернет.
2008-05-04, Abigor
php + mssql

Настройка php на freebsd для работы с базами в mssql по доменной авторизации.
2008-04-28, serge
i386=>amd64

Рассматриваеться способ удаленной миграции с архитектуры i386 на amd64 на рабочем сервере.
2008-04-24, Mr.Y
Lan over Bluetooth

Статья описывает как используя Bluetooth, объединить две FreeBSD машины в сеть.
2008-04-19, lissyara
WiFi WPA

Подключение FreeBSD к беспроводной WiFi сети с использованием шифрования WPA.
2008-04-18, nikll
nginx+php-fpm+mysql

Статья о настройке мощного веб сервера который не ляжет от хорошей нагрузки.
2008-04-16, nikll
qmail-ldap + AD

Статья о том как я прикрутил qmail к АД win2003 (с упровлением почтовыми аккаунтами через консоль mmc из под винды)
2008-04-14, SHPAk
Приглашение csh/tcsh

Приглашение csh/tcsh не всегда удобно. Здесь описано как помянять оное...
2008-04-07, inspirra
deltup, xdelta, bdelta

Некоторые тонкости создания бинарных патчей. И использование "The dynamic deltup server network" для экономии на обновлениях исходников программ устанавливаемых из портов.
2008-04-02, fr33man
exim + cyrus-imapd

Руководство по настройке почтовой системы на базе OpenBSD-4.2: exim + cyrus-imapd + mysql
2008-03-30, Morty
LiveCD (+restore)

LiveCD, который развернет мне на жёсткий диск готовую настроенную систему
2008-03-25, lissyara
BlueTooth mouse

Краткое повествование о том, как привернуть BlueTooth мышь к FreeBSD. Краткое - потому как делается это с полпинка...
2008-03-21, moonug
ProFTPD+iconv

Порт позволяющий включить перекодировку имён файлов в proftpd. Раньше для этого был патч, а щас всё поломали =))
2008-03-11, helloworld
vsftpd + mysql

Настройка фтп сервера vsftpd с пользователями из mysql
2008-03-06, Raven2000
Call of Duty 4

Call of Duty 4: Modern Warfare — компьютерная игра, продолжение серии COD, разработанное студией Infinity Ward. Это первая игра в серии, действие которой происходит не во время мировой войны.
2008-03-04, schizoid
NeTAMS 2

Netams, статистика, биллинг, огрнаичение и подсчет трафика
2008-03-04, schizoid
NeTAMS

Программа для учета и управления сетевым трафиком
2008-03-01, Le1
EA Battlefield 2 server

Установка игрового сервера EA Battlefield 2 под ОС FreeBSD
2008-02-25, dikens3
Dynamic DNS

Свой сервер с динамическим IP-Адресом.
2008-02-23, fr33man
squid ntlm

Настройка Squid с аутентификацией ntlm, под OpenBSD. Решение проблем сборки с поддержкой АД.
2008-02-18, lissyara
BlueTooth

Встала задача залить на Нокию гиг музыки через BlueTooth. ОС - правильный - FreeBSD, вот про то как это сделать из под неё - и рассказ. Также немного про нынешнее состояние дел с голубыми зубами =)
2008-02-17, Raven2000
NFS & Win2k3

При работе с UNIX системами на предприятиях часто приходится организовывать совместную работу с Windows. Необходимо обеспечить взаимодействие UNIX<>WIN бывает, что доступ по FTP или др не устраивает.
2008-02-14, Morty
Lightsquid

Снятие статистики с OOPS, SQUID с помощью lightsquid - нечто на подобии SARGa, и выполняет туже задачу, подбивает статистику пользования прокси сервером
2008-02-14, Morty
OOPS

Краткое описание установки и настройки прозрачного прокси-сервера OOPS
2008-02-12, fr33man
Apache

Настройка web-сервера apache, на базе OpenBSD. Нужен был web сервер. Стандартно нужно было ставить apache. Но я помнил, когда раньше работал с OpenBSD, что апач поставляется вместе с системой. Так
2008-02-11, Raven2000
Установка OpenBSD

OpenBSD — свободная многоплатформенная операционная система, основанная на 4.4BSD — BSD-реализации UNIX системы. Основным отличием OpenBSD от других свободных операционных систем, базирующихся на
2008-01-31, serge
ApacheStats

Сбор статистики с веб-сервера Apache в Cacti с использованием модулей mod_status и mod_info. Отображается число хитов в секунду, загрузка чилдренов и прочая полезная инфа.
2008-01-30, Raven2000
CVSUP и софт через Proxy

При работе за прокси люди испытывают неудобство при обновление портов и установки портов. Хотя, наверное, догадываются, что FreeBSD может элегантно обходить эти камни, но не знают как.
2008-01-25, nikll
kde и smb

статья о том как фрю сделать членом win2003 домена и о том как в кде 3.5 ходить по доменным шарам с нормальной русской кодировкой
2008-01-21, Fastman
Создание программ на QT4/С++

Установка и настройка QT4. Пример создание приложения с GUI.
2008-01-17, Morty
stunnel для pop3,smtp

Создание защищенного подключения для сервисов POP3, SMTP, Imap , www с помощью stunnel
2008-01-09, lissyara
Atheros AR5007EG

Прикручивание карточки Atheros AR5007EG (в ноутбуке Toshiba L40-139) под FreeBSD.
2008-01-04, LMik
growfs

Статья наглядно описывает изменение размера раздела диска в FreeBSD при помощи growfs, без потери данных находящихся на диске.
2007-12-23, serge
FreeBSD на VDS

Рассматривается настройка FreeBSD6.2 на VDS с чистой ОС.
2007-12-22, serge
OTRS на Apache1

Рассматривается установка Open Ticket Request System для работы на хостинг сервере в связке apache1.3 + mod_perl + mysql50.
2007-12-11, INFected
SkyStar-2+SlonAx

Встала задача организовать прием трафика от спутникового провайдера. Естественно на раздающем сервере должна быть FreeBSD. А как же иначе?
2007-12-08, netcat
GEOM-ELI

Шифрование файловых систем посредством класса GEOM-ELI
2007-12-07, helloworld
PVPGN

Настройка сервера Battle.net в небольшой локальной сети.
2007-12-06, seacon
ESET NOD32

Описание настройки антивирусной системы NOD32 ESET File Security
2007-11-23, azu
Bluetooth proximity monitor

Описание и скрипты для отслеживания удаленности bluetooth устройства.
2007-11-19, catdog_
verlihub (p2p)

описывается, как установить, настроить p2p-сервер и как им управлять
2007-11-14, UA
OpenVPN

руководство по настройке openvpn между FreeBSD и Windows
2007-11-11, AlkoGekS
atacontrol

Проверка работы raid-1 с помощью штатной утилиты atacontrol на freebsd 6.2
2007-11-08, Raven2000
Transport Tycoon Deluxe

Transport Tycoon Deluxe (сокращенно - TTD) - экономическая транспортная стратегия, в которой целью игрока является создание максимально доходной транспортной империи.
2007-11-06, lissyara
squid+AD

Инструкция - как авторизовать пользователей в домене, разделив доступ к ресурсам по виндовым группам - кому куда можно, а кому нельзя, с использованием squid2.6. Ну и объяснение - почему пока не 3.0.
2007-11-03, schizoid
icecast2

Вещание интернет радио в локальной сети с помощью icecast2
2007-11-02, AlkoGekS
RoundCube

Возникла необходимость перевести пользователей с squirrelmail на roundcube, завязать все это хотелось на postgresql, чтобы и в ней разобратьс заодно.
2007-10-30, SniZ
queues

Краткая заметка по использованию очередей В IPFW
2007-10-29, s@sh@
LACP и VLAN

Описание настройки LACP отдельно и совместно с VLAN во FreeBSD 7.0
2007-10-26, Al
portaudit

Эти приложение используется для контроля уязвимостей и обновления приложений, установленных из портов.
2007-10-24, -cat-
Заметки об IPFW

Заметки о настройке IPFW, подключение IPFW и NATD, принцип взаимодействия, принципы построения правил IPFW.
2007-10-23, Raven2000
X-Bomber

Представляю вниманию отличную аркаду которая скрасит наш быт и существование в офисном пространстве именуемая как "работа" И так прошу любить и жаловать X-Bomber
2007-10-22, Raven2000
TeamSpeak

Teamspeak (тимспик) — семейство программ, предназначенных для общения голосом в сети. От классического телефона отличается практически неограниченным количеством абонентов, разговаривающих одноврем
2007-10-22, RageLT
Nginx+php+fcgi

"Nginx + PHP + Spawn-fcgi" - установка nginx под FreeBSD и настройка для выполнения PHP скриптов.
2007-10-20, dikens3
UFS2

Как устроена UFS2. Небольшой взгляд изнутри.
2007-10-19, Al
Nagios - мониторинг сети

настройка мониторинга сети с использованием Nagios
2007-10-19, BlackCat
FFS из-под WinXP

Описание програмки для чтения BSD разделов под Windows. К сожалению, диск подключается в режиме только чтения - но и это уже неплохо.
2007-10-14, dikens3
recovery files

Восстановление файлов на FreeBSD с использованием foremost, sleuthkit, photorec. Немного теории о хранении файлов на диске.
2007-10-05, lissyara
ClamAV mirror

Понадобилось создать внутри локальной сети зеркало обновлений ClamAV, c учётом того, что разработчики это не привтствуют - пришлось изобретать подпорки и велосипеды.
2007-10-04, SeeD
irc + services

Установка irc сервера (unreailircd) + сервисов (anope) на FreeBSD 6.0. Приведён тот необходимый минимум, который вполне подойдет для одиночных серверов.
2007-10-04, lissyara
установка по сети

Столкнувшись с невозможностью поставить FreeBSD на старенький ноут с CD-ROM (толи диск царапаный, толи чё), пришлось изгаляться с установкой по сети - благо на нём был PXE у встроенной сетевухи.
2007-10-04, Al
cups-samba на samba+AD

Пример настройки сервера печати с использованием CUPS, Samba и AD. Пример установки и настройки клиентских (для винды) драйверов принтера на сервер с использованием порта cups-samba.
2007-10-03, schizoid
ipcalc

Скрипт для вычисления широковещательного адреса, диапазон хостов, шаблон сетевой маски по полученному IP и сетевой маске. Может использоваться для конструирования сетей и подсетей, а также в обучающих
2007-09-26, lissyara
немного о ssh

Краткое описание как пробросить порты с удалённой локальной сети на локальную машину при помощи ssh. Может быть полезным, когда нет VPN в удалённую сеть, а есть ssh, и нужен доступ к какому-то сервису
2007-09-26, SniZ
mod_ntlm2

mod_ntlm2 - модуль для apache22, позволяющий прозрачно авторизовать пользователя использую его доменную учетную запись. Удобно, если необходимо сделать ограниченный доступ к содержимому корпоротивного
2007-09-18, lissyara
klaptopdaemon

даемон KDE для мониторинга состояния батареи ноутбука. Наверное, самое удобное и функциональное из того, что я перебрал.
2007-09-17, bisyarin
Удаленное разбиение HDD

В статье рассмотрен пример удаленной доразбивки винчестера. Показан путь решения задачи как с использованием sysinstall, так и с помощью утилит fdisk, bsdlabel и newfs.
2007-09-14, freeman_tnu
DSL-G804V и FreeBSD 6.2

Настройка VPN-туннеля между D-Link DSL-G804V и FreeBSD 6.2
2007-09-13, lissyara
KNemo

Служба KDE отображающая в трее значка сетевого подключения, с богатым функционалом - позволяет собирать статистику, строить графики, выполнять скрипты при изменении статуса сетевого подключения.
2007-09-12, lissyara
desktopbsd-tools

Набор утилит для упрощения жизни под KDE. Включают в себя утилиты трея для слежения за сетью, монтирования/ демонтирования, информацию о заряде батереи. Также несколько апплетов для контрольной панели
2007-09-06, lissyara
nettop

Приложение позволяющее отслеживать сетевую активность по портам-протоколам, и отображать скорость передачи данных по этим портам и протоколам. Весьма удобно для наблюдения - что происходит на сервере.
2007-09-04, squid
sshd & AD

Использование одной учетной записи на FreeBSD и Windows - используя AD для авторизации пользователей по ssh
2007-09-02, lissyara
ISPmanager

Краткое описание того, как заменить дефолтовый майлер на ISPmanager, если он у вас - sendmail. Может пригодится тем кто берёт виртуальный сервер, и хочет большей гибкости в настройке.
2007-08-25, serge
mod_ntlm

mod_ntlm - модуль для apache13, позволяющий прозрачно авторизовать пользователя использую его доменную учетную запись. Удобно, если необходимо сделать ограниченный доступ к сайту.
2007-08-15, lissyara
colorize

colorize - утилита для подсветки ключевых слов в просматриваемых логах. Весьма удобно - становится более понятно и доходчиво, тока временами слишком уж пёстро :)))
2007-08-13, Raven2000
Документация на Unix

Здесь представляем список необходимой документации для чтения и полного освоения FreeBSD как основной серверной операционной системы. И не только ее.
2007-08-06, lissyara
QTFW

Графический интерфейс для составления и редактирования правил файрволла IPFW - абсолютно бесполезная приблуда...
2007-08-01, Raven2000
Counter-Strike 1.6

По просьбам трудящихся, точнее по их заявлениям, о том что нужна им Counter-Strike 1.6 хоть "убейся об стену". Решил разобраться, наконец, с этим вопросом, что и сделал. И так поехали. :)
2007-07-31, f0s
LDAP: samba, dns, dhcp

Настраиваем PDC на самбе, все данные в LDAP. Попутно вешаем DDNS+DHCP - их данные тоже храним в LDAP.
2007-07-27, lissyara
root-tail

Практически бесполезное, но довольно забавное приложение, показывающее логи на рабочем стол. Может пригодится лишь если на ваш десктоп логи передаются с удалённых хостов.
2007-07-27, lissyara
laptop battery

Краткий обзор программ мониторинга состояния заряда батареи ноутбука - что можно использовать на FreeBSD7.0 (CURRENT) и AMD64.
2007-07-24, Raven2000
phpBB-2/3

phpBB – это мощное, полностью масштабируемое и легко изменяемое программное обеспечение с открытым исходным кодом для создания конференций. Основанный на мощном языке PHP и имеющий поддержку серверов
2007-07-23, lissyara
apache 2.0

Настройка WEB-сервера на apache2 и php в режиме CGI с использованием mod_fastcgi.
2007-07-15, lissyara
geom_uzip

Создание образа сжатой ФС с загрузкой по сети - данный метод может использоваться для создания загрузочных дисков/сидюков и прочего - на машинах где мало оперативки, например...
2007-07-06, bdmalex
2 CD -> 1 DVD

FreeBSD: Заменим 2 инсталляционных диска на 1 DVD.... чтобы коллекцию дисков уменьшить....
2007-07-04, Andy
NSPluginWrapper

Перевод с французского очень хорошего мануала, досконально объясняющего, как инсталлировать линуксовые плугины для firefox, используя NSPluginWrapper. В том числе и 9-й flash.
2007-07-01, lissyara
sshit

Перловый скрипт мониторящий попытки подбора паролей для ssh/ftp в режиме реального времени, и блокирующий атакующего используя файрволл - pf/ipfw/ipfw2 - просто и со вкусом :)
2007-06-19, Raven2000
CMS - TYPO3

Ставим CMS TYРOЗ - Корпоративная система управления веб-контентом TYРOЗ — система управления сайтами (CMS/CMF) с открытым исходным кодом и свободной лицензией. Написана на PHP, для хранения данных...
2007-06-15, lissyara
SAMBA+ACL

SAMBA + правка расширенных пермишенов (ACL) через виндовые галочки - полезно для передачи управления шарами на самбе виндовым админам, ничё кроме галок и не умеющим :)
2007-06-13, roygbiv
ntop 4.10

Установка, настройка, оптимизация сетевого анализатора трафика ntop 4.1 stable с плагинами (в т.ч.SPAN-Sniffer и NetFlow) на FreeBSD 8.2 release. Описание nProbe.
2007-06-09, Andy
vsftpd

перевод мана на vsftpd
2007-06-04, lissyara
exim + dovecot + win2003 AD

Как заставить связку exim+dovecot использовать в качестве БД пользователей виндовый домен. Статья неполноценная - тока основные моменты и ссылки, где взять остальное. Скорее - просто заметка для себя.
2007-05-30, lissyara
exim + exchange

Настройка релея на exim для сервера M$ exchange находящегося внутри локальной сети. Настройка перезаписи адресов локального домена на внешний.
2007-05-13, Raven2000
Бронированный FreeBSD

Как и любую другую систему FreeBSD нужно так же защищать от посягательств на нее. Она не так уж защищена, как много людей о ней думают и ее можно так же сломать и крякнуть, как и тот же Windows.
2007-05-12, alex3
Печать из фри в винду

Печать из FreeBSD на сетевой принтер виндов
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 26 чел.
За последние 30 мин было: 111 человек
За сегодня было
12519 показов,
1076 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1625 секунд
Из них PHP: 81%; SQL: 19%; Число SQL-запросов: 77 шт.
Исходный размер: 577255; Сжатая: 119736