!!! Ниже опубликованная статья - первый вариант настройки почтаря на базе DBmail + Exim в Debian. С тех пор были накоплены некоторые изменения. Ссылки на обновлённые статьи: http://linuxforum.ru/viewtopic.php?pid=125525#p125525 !!!
Написал парочку хауту для размещения в бложике своём, но решил что оный миру нафиг не нужен. Итак всякого быдла в сети навалом. А статейки были бы полезны линуксфоруму. Так что размещаю первую тут. Текст оригинальный.
Бытует такое мнение, что системный администратор за свою жизнь должен сделать обязательно несколько вещей. Точно не вспомнить, но поднятие своего почтового сервера в этом списке точно было. Собственно для этого я использовал связку из Dbmail (MySql) и Exim, а так же Spamassasin и Clamav. Все пакеты были были взяты из репозиториев Debian Squeeze. Допиливались только конфиги.
Собственно почему именно Dbmail? Отзывы хорошие. Конечно то, что всю почту он складирует в БД, для меня несколько избыточно. Зато чертовски удобно и практично. Ещё умеет жить с каталогами LDAP, но этого я не стал настраивать.
Для начала ставим пакеты:
# aptitude install exim4 exim4-daemon-heavy mysql-server mysql-client dbmail dbmail-mysql clamav clamav-daemon clamav-data spamassassin sa-exim
Назначение пакетов наглядно понятно из названий.
Во время установки mysql-сервера будет запрошен пароль root пользователя базы данных. Главное его потом не забыть...
Следующее действие - настройка БД. Для этого логинимся туда как root:
Создаём БД:
И пользователя к ней (не забудьте подставить желаемый пароль):
На данные действия база должна вернуть результат OK. После этого логофимся:
Теперь подготавливаем и заливаем образ базы:
$ mysql -u dbmail -p dbmail < create_tables_dbmail.sql
Следующий шаг - настройка dbmail. В файле /etc/dbmail/dbmail.conf заменяем стандартные значения на ниже приведённые (пароль укажите свой):
authdriver = sql
host = localhost
sqlport = 3306
sqlsocket = /var/run/mysqld/mysqld.sock
user = dbmail
pass = DB_PASSWORD
Полный листинг файла /etc/default/dbmail:
START_IMAPD=1
И рестартуем демона:
Далее настраиваем ClamAV, разрешаем ему работу с Exim:
# chmod -Rf g+w /var/spool/exim4
# chmod -Rf g+s /var/spool/exim4
И в /etc/clamav/clamd.conf нас интересует значение:
Рестартуем:
Устанавливаем значения конфигурации Spamassasin (в /etc/default/spamassassin):
CRON=1
Тем самым включаем периодическое автообновление. Рестарутем:
Настройка Exim4. Сам процесс очень специфичен для конфигурации Exim в Debian. Ниже указываю файлы, которые надо изменить или создать.
Полный листинг /etc/exim4/update-exim4.conf.conf:
dc_other_hostnames='somedomain.org'
dc_local_interfaces=''
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets='127.0.0.0/8'
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
Полный листинг /etc/exim4/conf.d/main/05_exim4-config_dbmail_lookup_user (не забудьте указать правильный пароль от БД):
Полный листинг /etc/exim4/conf.d/main/06_exim4-config_smtp_banner_user :
Полный листинг /etc/exim4/conf.d/main/10_exim4-config_clamav_user:
Полный листинг /etc/exim4/conf.d/transport/30_exim4-config_dbmail_lmtp_user :
driver = smtp
protocol = lmtp
hosts = 127.0.0.1
allow_localhost
return_path_add
Полный листинг /etc/exim4/conf.d/router/750_exim4-config_dbmail_user:
debug_print = "R: dbmail_user for $local_part@$domain"
driver = accept
condition = ${lookup mysql{\
SELECT alias_idnr FROM dbmail_aliases WHERE \
alias='${quote_mysql:$local_part@$domain}' OR \
alias='${quote_mysql:@$domain}'}{yes}{no}}
transport = dbmail_lmtp
cannot_route_message = Unknown user
Полный листинг /etc/exim4/conf.d/auth/10_exim4_config_dbmail_auth_plain_user:
driver = plaintext
public_name = PLAIN
server_condition = ${lookup mysql{\
SELECT user_idnr FROM dbmail_users WHERE \
userid='${quote_mysql:$2}' AND \
passwd='${quote_mysql:$3}'}{yes}{no}}
server_prompts =:
server_set_id = $2
Полный листинг /etc/exim4/conf.d/auth/15_exim4-config_dbmail_auth_login_user :
driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{\
SELECT user_idnr FROM dbmail_users WHERE \
userid='${quote_mysql:$1}' AND \
passwd='${quote_mysql:$2}'}{yes}{no}}
server_prompts = Username::: Password::
server_set_id = $1
Полный листинг /etc/exim4/conf.d/auth/20_exim4-config_dbmail_auth_cram_md5_user :
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{\
SELECT passwd FROM dbmail_users WHERE \
userid='${quote_mysql:$1}'}{$value}fail}
server_set_id = $1
Ну и кусок правил для блокирования нежелательной почты из /etc/exim4/conf.d/acl/40_exim4-config_check_data:
# This hook allows you to hook in your own ACLs without having to
# modify this file. If you do it like we suggest, you'll end up with
# a small performance penalty since there is an additional file being
# accessed. This doesn't happen if you leave the macro unset.
.ifdef CHECK_DATA_LOCAL_ACL_FILE
.include CHECK_DATA_LOCAL_ACL_FILE
.endif
# ClamAV virus scan for post server
deny message = This message contains a virus: ($malware_name) please scan your system.
demime = *
malware = *
# accept otherwise
accept
--- Конец файла ---
Последний штрих - указание транспорта lmtp в файле /etc/services путём добавления в конец файла строчки
Рестартуем exim:
Создадим первого пользователя системы:
Дело за малым - настройка любимого почтового клиента. Но тут каждый сделает всё сам.
При написании были использованы материалы:
http://wiki.e-lug.ru/%D0%9D%D0%B0%D1%81 … PostgreSQL
http://www.lissyara.su/archive/exim+dbmail/
кучка man'ов
Надеюсь пригодиться.


