HOWTO: почтовик на базе dbmail (mysql) и exim в Debian Squeeze
К сожалению, на оригинальном источнике мануала сбилась подсветка, и я переживаю за целостность материалов в будущем, поэтому скопипастил к себе. Заодно добавил, несколько комментариев.
Для начала ставим пакеты:
1 2 3 4 |
# aptitude update # aptitude install exim4 exim4-daemon-heavy mysql-server mysql-client dbmail dbmail-mysql clamav clamav-daemon clamav-data clamav-freshclam spamassassin sa-exim |
Назначение пакетов наглядно понятно из названий.
Важно поставить именно exim4-daemon-heavy. У вас может стоять exim4-light, в случае если выскочит вопрос, об удалении light версии, соглашайтесь.
Во время установки mysql-сервера будет запрошен пароль root пользователя базы данных. Главное его потом не забыть...
Пароль root-а для MySQL сервера будет запрошен только в случае, если MySQL еще не установлен. В противном случае, подразумевается, что вы его знаете.
Следующее действие - настройка БД. Для этого логинимся туда как root:
1 2 3 |
$ mysql -u root -p |
Создаём БД:
1 2 3 |
CREATE DATABASE dbmail CHARACTER SET utf8 COLLATE utf8_general_ci; |
И пользователя к ней (не забудьте подставить желаемый пароль вместо DB_PASSWORD):
1 2 3 |
GRANT ALL PRIVILEGES ON dbmail.* TO 'dbmail'@'localhost' IDENTIFIED BY 'DB_PASSWORD' WITH GRANT OPTION; |
На данные действия база должна вернуть результат OK. После этого логофимся:
1 2 3 |
exit; |
Теперь подготавливаем и заливаем образ базы:
1 2 3 4 |
$ zcat /usr/share/doc/dbmail-mysql/examples/create_tables.mysql.gz > ~/create_tables_dbmail.sql $ mysql -u dbmail -p dbmail < ~/create_tables_dbmail.sql |
Следующий шаг - настройка dbmail.
В файле /etc/dbmail/dbmail.conf заменяем стандартные значения на ниже приведённые (пароль укажите свой):
1 2 3 4 5 6 7 8 9 |
driver = mysql authdriver = sql host = localhost sqlport = 3306 sqlsocket = /var/run/mysqld/mysqld.sock user = dbmail pass=DB_PASSWORD |
Обратите внимание, что DB_PASSWORD надо заменить на пароль от базы, а так же, что после pass= не должно быть пробелов!!!
Полный листинг файла /etc/default/dbmail
1 2 3 4 5 |
START_LMTPD=1 START_IMAPD=1 START_POP3D=1 |
Файл /etc/default/dbmail всего скорее будет пустым или отсутствовать, поэтому его возможно придется создать
И рестартуем демона:
1 2 3 |
# /etc/init.d/dbmail restart |
Далее настраиваем ClamAV, разрешаем ему работу с Exim:
1 2 3 4 5 |
# adduser clamav Debian-exim # chmod -Rf g+w /var/spool/exim4 # chmod -Rf g+s /var/spool/exim4 |
И в /etc/clamav/clamd.conf нас интересует значение:
1 2 3 |
AllowSupplementaryGroups true |
Рестартуем:
1 2 3 |
# /etc/init.d/clamav-daemon restart |
После рестарта с большой вероятностью Вам покажут сообщение:
Starting ClamAV daemon: clamd LibClamAV Warning: **************************************************
LibClamAV Warning: *** The virus database is older than 7 days! ***
LibClamAV Warning: *** Please update it as soon as possible. ***
LibClamAV Warning: **************************************************
В нем говорится, что базы антивируса устарели, поэтому их надо обновить. Делаем это вручную:
1 2 3 |
#freshclam |
Устанавливаем значения конфигурации Spamassasin (в /etc/default/spamassassin ):
1 2 3 4 |
ENABLED=1 CRON=1 |
Тем самым включаем периодическое автообновление. Рестарутем:
1 2 3 |
# /etc/init.d/spamassassin restart |
Настройка Exim4. Сам процесс очень специфичен для конфигурации Exim в Debian. Ниже указываю файлы, которые надо изменить или создать.
Полный листинг /etc/exim4/update-exim4.conf.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
dc_eximconfig_configtype='internet' dc_other_hostnames='somedomain.org' dc_local_interfaces='127.0.0.1;serv.ip.addr.ess;::1' 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' |
Если на одном сервере несколько доменов, то их надо указывать в dc_other_hostnames через точку с запятой, пример:
dc_other_hostnames='domain1.org;domain2.org'В dc_local_interfaces, вместо serv.ip.addr.ess, нужно указать ip сервера
Полный листинг /etc/exim4/conf.d/main/05_exim4-config_dbmail_lookup_user (не забудьте указать правильный пароль от БД):
1 2 3 |
hide mysql_servers = localhost/dbmail/dbmail/DB_PASSWORD |
Полный листинг /etc/exim4/conf.d/main/06_exim4-config_smtp_banner_user
1 2 3 |
smtp_banner = $smtp_active_hostname mail server |
Полный листинг /etc/exim4/conf.d/main/10_exim4-config_clamav_user
1 2 3 |
av_scanner = clamd:/var/run/clamav/clamd.ctl |
Полный листинг /etc/exim4/conf.d/transport/30_exim4-config_dbmail_lmtp_user
1 2 3 4 5 6 7 8 |
dbmail_lmtp: driver = smtp protocol = lmtp hosts = 127.0.0.1 allow_localhost return_path_add |
Полный листинг /etc/exim4/conf.d/router/750_exim4-config_dbmail_user
1 2 3 4 5 6 7 8 9 10 11 |
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
1 2 3 4 5 6 7 8 9 10 11 |
auth_plain: 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
1 2 3 4 5 6 7 8 9 10 11 |
auth_login: 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
1 2 3 4 5 6 7 8 9 |
auth_cram_md5: 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
--!!-- Пропущено --!!-- # 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 путём добавления в конец файла строчки
1 2 3 |
lmtp 24/tcp # Dbmail lmtpd |
Рестартуем exim:
1 2 3 |
# /etc/init.d/exim4 restart |
Создадим первого пользователя системы:
1 2 3 |
# dbmail-users -a логин -w пароль -s адрес_почты@somedomain.org |
Я обычно в качестве email-а использую полный адрес почты. В таком случае, если email: mymail@domain.org, то надо выполнить:
dbmail-users -amymail@domain.org -wPASSWORD -smymail@domain.orgПодробнее, про управление пользователями можно прочитать тут: DBMAIL manage_users (http://www.dbmail.org/dokuwiki/doku.php/manage_users). Например, удалить пользователя можно так:
dbmail-users -d mymail@domain.org
Дело за малым - настройка любимого почтового клиента.
Настройки из The Bat!
Адреса серверов:
- POP3: domain.com
- SMTP: domain.com
Аутентификация POP3: Обычная
Аутентификация SMTP:
[*] Аутентификация SMTP (RFC-2554)
[*] Использовать параметры получения почты (POP3/IMAP)
[*] Аутентификация "POP прежде SMTP"
Что делать в случае проблем:
- Перепроверьте все конфиги (особенно если ошибка вида: Exim configuration error in line 210 of /var/lib/exim4/config.autogenerated.tmp).
- Найдите все комманды перезапуска сервисов и сделайте им рестарт (особенно если не можете приконектиться из почтового клиента).
- Проверьте логи, в /var/log/*
Оригинал статьи тут: http://linuxforum.ru/viewtopic.php?id=3316
Автор первоисточника: zerg.
Author: | Tags: /
| Rating:
6 comments.
Write a comment