Категорії
Linux Mail systems

Почтовая связка vexim в сборе (vexim+exim+dovecot+mysql+sa+clamav+mailman) под Debian

Если вам быстро нужно установить и настроить почтовый сервер под Debian linux, то эта статья для вас. В статье рассказываться, как установить и настроить связку exim+dovecot+mysql+sa+clamav ну и естественно с удобным механизмом администрирования почтовых ящиков и доменов. В довесок ко всему прочему добавим возможность использовать сертификаты.

Примечание.

отправка почты будет осуществляться ИСКЛЮЧИТЕЛЬНО через tls/ssl, несмотря на то, что 25 порт будет доступен. Если вы хотите включить отправку через tls/ssl – только как один из вариантов и оставить возможность пользователям делать отправку почты через 25-ый порт – уберите из конфига exim’a строку

auth_advertise_hosts = ${if eq {$tls_cipher}{}{}{*}}

Тестовый стенд: базовая установка Debian Linux lenny 5. Но статью так же можно применить и к минимальной установке.

Перед установкой рекомендую обновить базу данных пакетов:

#apt-get update

1) Установка MTA Exim’a

В базовой установке уже есть пакет exim4-daemon-light, но нам его недостаточно. Для полноценного функционирования нужен пакет exim4-daemon-heavy. Собственно ставим:

#apt-get install exim4-daemon-heavy

Настройка exim’a будет производится в разделе “Установка панели управления vexim”

2) Установка pop3/imap сервера dovecot

Поскольку мы будем использовать как imap так и pop3 то установим оба сервера. Если вам нужен только один – нет надобности ставить другой. Приступим:

#apt-get install dovecot-imapd dovecot-pop3d dovecot-common

Теперь приведём конфигурационные файлы dovecot’a к такому виду:

Файл dovecot-sql.conf:

driver = mysql
#connect = host=localhost user=mail_user password=mail_pass dbname=vexim
connect = host=/var/run/mysqld/mysqld.sock user=mail_user password=mail_pass dbname=vexim
#default_pass_scheme = MD5
default_pass_scheme = CLEARTEXT
user_query = SELECT pop AS home, uid AS uid, gid AS gid FROM users WHERE username = '%n@%d'
#password_query = SELECT crypt AS password FROM users WHERE username = '%n@%d' AND enabled = '1'
password_query = SELECT clear AS password FROM users WHERE username = '%n@%d' AND enabled = '1'

Файл dovecot.conf:

base_dir = /var/run/dovecot/
protocols = imaps pop3s
protocol imap {
ssl_listen = *:993
}
protocol pop3 {
ssl_listen = *:995
}
disable_plaintext_auth = yes
log_path = /var/log/mail.log
info_log_path = /var/log/mail.log
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = mail
ssl_disable = no
ssl_cert_file = /etc/ssl/smtpd.pem
ssl_key_file = /etc/ssl/smtpd.pem
login_greeting = pop3/imap server ready.
mail_location = maildir:~/Maildir
mail_privileged_group = mail
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_uid = 26
first_valid_gid = 6
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_size = 64
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 200
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
maildir_copy_with_hardlinks = yes
protocol imap {
imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
postmaster_address = postmaster@domain.com
auth_socket_path = /var/run/dovecot/auth-master
}
auth_default_realm = domain.com
auth_username_format = %Lu
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain login cram-md5 digest-md5
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb passwd {
args = blocking=yes
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = Debian-exim
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = Debian-exim
}
}
}
dict {
}
plugin {
}

3) Установка базы данных mysql

#apt-get install mysql-server

Во время установки вас попросят указать пароль для MySQL пользователя “root“.

4) Установка вебсервера apache (+php)

Поскольку нам нужна поддержка не только PHP, но и PEAR (нужен для vexim’a) то мы ставим следующие пакеты:

#apt-get install apache2 libapache2-mod-gnutls libapache2-mod-php5 libapache2-mod-perl2 php5 php5-mysql php5-imap php-doc php5-suhosin php5-cli php5-mcrypt php-gettext php-pear php5-dev php-db

Поскольку в debian’e поддержка php в веб-сервере после установки присутствует так сказать “из коробки”, то никаких дополнительных настроек делать не нужно.

5) Установка панели управления vexim.

Поскольку в репозиториях debian’a нет пакета vexim, то установку будем производить из исходников. Точнее как таковыми их назвать нельзя, ибо это просто набор скриптов php. В любом случае скачиваем с сайта производителя последнюю стабильную версию:

#cd /var/www
#wget http://silverwraith.com/vexim/vexim2.2.1.tar.gz
#tar -xzf vexim2.2.1.tar.gz
#mv vexim2/vexim/ ./

Создадим каталог, где будет храниться почта:

#mkdir /var/mail/vmail

Для выполнения команды ниже по тексту, потребуется установить такие пакеты:

# apt-get install libcrypt-eksblowfish-perl libcrypt-openssl-random-perl libdbd-mysql-perl libdbi-perl

Теперь переходим к созданию базы для vexim’a в mysql. Для этого выполняем такую команду (по ходу нам будут задавать вопросы, на которые мы будем отвечать так, как показано ниже):

#/var/www/vexim2/setup/create_db.pl --act=newdb --dbtype=mysql --uid=101 --gid=103 --mailstore=/var/mail/vmail

где 101UID пользователя Debian-exim (пользователь, от которого работает exim) и 103GID группы Debian-exim (группа, от которой работает exim). Если у вас они другие – измените на те, которые у вас.

Please enter the username of the mysql superuser: root
Please enter the password of the mysql superuser:
Please enter the name of your NEW database: vexim
Please enter a name for the database user who gets access to vexim: vexim
Please enter a password for the 'vexim' database user:
Confirm password:
Please enter a password for the 'siteadmin' user:
Confirm password:
The user 'siteadmin' has been added with the password
Database created successfully!

Пользователь siteadmin предназначен для управления доменами (создание, изменения, удаления). При первом запуске нужно будет зайти под этим пользователем и создать почтовый домен: тип домена указать local. После этого будет создан администратор домена с логином postmaster@domain, который будет использоваться для администрирования пользователей.

Мы создали БД Vexim с полными правами для пользователя Vexim и администратором панели vexim siteadmin.

Теперь нужно создать пользователя mail_user с паролем mail_pass и доступом на чтение в базу vexim. От имени этого пользователя будет выполнятся запрос на поиск почтового аккаунта dovecot’ом и exim’ом. И так:

#mysql -u root -p vexim
mysql>CREATE USER 'mail_user'@'localhost' IDENTIFIED BY 'mail_pass';
mysql>GRANT SELECT ON vexim.* TO 'mail_user'@'localhost';
mysql>flush privileges;

Добавим описание нашей панели Vexim в apache. Для этого создадим файл vexim.conf в каталоге /etc/apache2/conf.d такого содержания:

Alias /vexim /var/www/vexim
<Directory /var/www/vexim>
Options Indexes FollowSymLinks -ExecCGI
AllowOverride None
Order Deny,Allow
Deny from all
Allow from 1.1.1.1/32
</Directory>

Если вы хотите использовать virtualhosts – тогда добавьте это в соответствующее описание в вашем виртуальном хосте. Этими настройками мы запретили всем доступ, кроме адреса 1.1.1.1

Теперь перейдём к настройке. Настройка будет состоять из 2-х этапов: настройка самого vexim’a и настройка exim’a.

-vexim

В корне сайта есть в папке config в файле variables.php. Меняем такие переменные:

$sqlserver = "localhost";
$sqltype = "mysql";
$sqldb = "vexim";
$sqluser = "vexim";
$sqlpass = "vexim_pass";
$uid = "103";
$gid = "103";
$AllowUserLogin = 0;

-exim

Копируем файл configure из поставки Vexim (он находится в папке docs относительно корня архива vexim2.2.1) в папку /etc/exim4 в файл под названием exim4.conf и меняем такие переменные (остальные – по желанию):

local_scan_path = /usr/lib/exim4/local_scan/sa-exim.so
MAILMAN_HOME=/var/lib/mailman
MAILMAN_USER=101
MAILMAN_GROUP=8
tls_on_connect_ports = 465
tls_certificate = /etc/ssl/smtpd.pem
tls_privatekey = /etc/ssl/smtpd.pem
auth_advertise_hosts = ${if eq {$tls_cipher}{}{}{*}}
primary_hostname = mail.domain.ua
daemon_smtp_ports = 25 : 465
domainlist local_domains = ${lookup mysql{VIRTUAL_DOMAINS}} : ${lookup mysql{ALIAS_DOMAINS}} : mail.domain.ua
hostlist   relay_from_hosts = localhost : 127.0.0.1
trusted_users = 101:8
#hide mysql_servers = localhost/vexim/mail_user/mail_pass
hide mysql_servers = localhost::(/var/run/mysqld/mysqld.sock)/vexim/mail_user/mail_pass
split_spool_directory = true
smtp_accept_max = 500
smtp_accept_max_per_connection = 30
smtp_accept_max_per_host = 40
smtp_enforce_sync = true
acl_smtp_helo = acl_check_helo
av_scanner = clamd:/var/run/clamav/clamd.ctl
exim_user = Debian-exim
sender_unqualified_hosts = +relay_from_hosts : localhost
helo_accept_junk_hosts = +relay_from_hosts : localhost
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
.include /etc/exim4/vexim/vexim-acl-check-spf.conf
acl_check_virus:
.include /etc/exim4/vexim/vexim-acl-check-content.conf
.include /etc/exim4/vexim/vexim-group-router.conf
user = Debian-exim
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h

Добавляем авторизацию через dovecot (добавляем в раздел begin authenticators):

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

auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

Файлы vexim-acl-check-content.conf, vexim-acl-check-helo.conf, vexim-acl-check-rcpt.conf, vexim-acl-check-spf.conf, vexim-group-router.conf – находятся в папке docs относительно корня архива vexim2.2.1. Скопируем их в папку vexim в каталоге /etc/exim.

6) Установка антивируса clamav.

Пришло время поставить антивирус для проверки входящей почты:

#apt-get install clamav-freshclam clamav clamav-daemon

Если во время запуска clamav-daemon возникает ошибка:

/lib/lsb/init-functions: line 30: 11788 Ошибка сегментирования /sbin/start-stop-daemon --start --nicelevel $nice --quiet --exec $exec --oknodo --pidfile "$pidfile" -- "$@" failed!

тогда добавляем в /etc/apt/sources.list

deb http://volatile.debian.net/debian-volatile stable/volatile main

обновляем список пакетов и обновляем clamav:

#apt-get update ; apt-get install clamav-daemon

clamav – очень капризный пакет и всегда любит быть только последней версией (неважно, стабильной или нет). Поэтому, мы и добавили строку в /etc/apt/sources.list адрес сайта, где лежат последние версии пакетов.

7) Установка спамфильтра SpamAssassin.

#apt-get install sa-exim spamassassin

После установки получаем сообщение:

SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin

Что собственно и собираемся сделать. Открываем /etc/default/spamassasin и изменяем такие параметры:

ENABLED=1
CRON=1
OPTIONS="--create-prefs --max-children 100 --helper-home-dir -u Debian-exim"

где Debian-exim – пользователь, от которого работает exim. Кстати, установкой переменной cron в 1 мы добавили возможность обновлять базу спамфильтра с официального сайта.

8 ) Генерация сертификатов SSL

Генерация выполняется одной командой (мы сгенерировали сертификат на 100000 дней)

#cd /etc/ssl && openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 100000 -subj '/O=Some Org/CN=mail.domain.com'

где mail.domain.com – реальное имя почтового сервера (если указать другое, могут быть проблемы с сертификатами у outlook’a)

Внимание!

В случае проблем с сертификатам или с тем, что почтовый клиент не хочет цепляться на ssl порт, попробуйте рекомендации из этой статьи

Но и если после этого тоже ничего не сработало, только нужно в клиенте сначала импортировать сертификат, то есть добавить его в Исключение  и только потом настраивать учётную запись.

Если вы используете клиент Outlook, то для нормально работы нужно будет сгенерировать для него свой сертификат на основе smtpd.pem:

#openssl pkcs12 -export -out mail.pfx -in mail.pem -name "mycert" -inkey mail.pem

После этого нужно установить сертификат и смело работать.

Для проверки того, что STARTTLS работает, выполняем такую команду:

$openssl s_client -starttls smtp -showcerts -connect mail.domain.ua:25
$openssl s_client -starttls imap -showcerts -connect mail.domain.com:143

А для SSL:

$openssl s_client -connect mail.domain.ua:465
$openssl s_client -connect mail.domain.ua:993

Если в выводе увидели содержимое сертификата и обязательно приглашение сервера (smtp или imap) – поздравляю, настройка SSL/STARTTLS прошла успешно.

9) Установка web-морды roundcube

Для roundcube нам понадобятся дополнительные пакеты:

#apt-get install php-mail-mime libjs-jquery

Если в процессе установки roundcube у вас возникли ошибки, можете скачать его с официального сайта (сейчас уже доступна версия 0.5):

wget "http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.4.2/roundcubemail-0.4.2.tar.gz?r=http%3A%2F%2Fwww.roundcube.net%2Fdownload&ts=1291280200&use_mirror=ignum2"

Если у вас возникает ошибка:

ERROR: Wrong 'suhosin.session.encrypt' option value. Read REQUIREMENTS section in INSTALL file or use Roundcube Installer, please!

Нужно отредактировать файл /etc/php5/conf.d/suhosin.ini:

suhosin.session.encrypt = off

и перечитать конфигурационный файл apach’a.

Теперь перейдём к настройкам roundcube. В корне сайта есть папка config, а в ней собственно и находятся 2 конфигурационных файла db.inc.php и main.inc.php. Первый отвечает за подключение к базе данных (roundcube в своей работе использует базу данных), второй собственно отвечает за настройки интерфейса, авторизацию.

db.inc.php:

$rcmail_config['db_dsnw'] = 'mysql://roundcube_user:roundcube_pass@localhost/roundcube_db';

main.inc.php:


$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
$rcmail_config['imap_auth_type'] = plain;
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
#используйте этот параметр, если у вас 1 домен
#и вы хотите, что бы пользователи при логине вводили только имя, без домена
$rcmail_config['username_domain'] = 'domain.com.ua';
$rcmail_config['smtp_auth_type'] = 'LOGIN';
$rcmail_config['default_charset'] = 'UTF-8';
$rcmail_config['spellcheck_languages'] = array('en'=>'English', 'ru'=>'Russian');
$rcmail_config['log_dir'] = '/var/log/roundcube/';
$rcmail_config['max_recipients'] = 20;

Остальные настройки – по желанию.

9) Изменения в группах /etc/groups

Для нормального функционирования почтовой системы, нужно внести некоторые изменения в группы пользователей. Приведу часть файла /etc/group, где видно, какие пользователи в каких группах должны состоять:

Debian-exim:x:103:clamav
mail:x:8:dovecot,clamav,Debian-exim,www-data,mail
clamav:x:112:Debian-exim

10) Разное

Если ошибка в процессе первичной настройки вылазит ошибка:

2010-12-02 14:14:45 1PO83g-0006iO-2N malware acl condition: clamd: ClamAV returned /var/spool/exim4/scan/1PO83g-0006iO-2N: lstat() failed: Permission denied. ERROR
2010-12-02 14:14:45 1PO83g-0006iO-2N H=localhost (192.168.115.128) [127.0.0.1] I=[127.0.0.1]:25 F=<user@mail.ru> temporarily rejected after DATA

то делаем так:

#/var/spool/exim4# chmod g+s scan/
#/var/spool/exim4# ls -l |grep sca
drwxrws--- 2 Debian-exim Debian-exim 4096 Окт 27 15:37 scan

Или можно ещё выставить значение переменной AllowSupplementaryGroups=on в конфиге clamav’a

11) Установка mailman

Настройки Vexim предлагают возможность использования модерируемых рассылок mailman. Установка и первичная настройка достаточно проста:

#apt-get install mailman

При установке будет задан вопрос и языке для списка рассылок. Настоятельно рекомендую выбрать английский, иначе в консоли будут квадратики вместо букв. На настройки в web-интерфейсе это никак не отразиться.

После установки нужно создать служебную рассылку mailman:

newlist --urlhost=192.168.115.128 --emailhost=192.168.115.128 -l en mailman postmaster@mail.ru mailman_pass

Ну и задать пароль для создания рассылок

#/usr/lib/mailman/bin/mmsitepass -c

72 коментарі “Почтовая связка vexim в сборе (vexim+exim+dovecot+mysql+sa+clamav+mailman) под Debian”

А куда девать файл configure, вы написали что его нужно копировать, а куда ?

Здравствуйте! Большое спасибо за Ваш туториал. В процессе настройки возник вопрос:
в файле exim4.conf нет большинства строк (переменных), которые Вы указали. Их нужно дописывать самому?

Спасибо за ответ!

Вроде все как Вы написали сделал, Apache работает. Но как перейти к самой админке vexim через браузер? что вводить в адресной строке? Я ввожу http://ip-адрес сервера/vexim – пишет, что
Forbidden
You don’t have permission to access /vexim on this server.

Подскажите как быть =) Спасибо!

Вы видимо скопировали полностью блок

Alias /vexim /var/www/vexim

Options Indexes FollowSymLinks -ExecCGI
AllowOverride None
Order Deny,Allow
Deny from all
Allow from 1.1.1.1/32

Дело в том, что в этом блоке стоит защита: доступ разрешён только для IP адреса 1.1.1.1 Если вам нужна защита, просто измените на нужный IP-адрес. Если же вам не нужна защита, то замените кусок

Order Deny,Allow
Deny from all
Allow from 1.1.1.1/32

на такой

Order Allow,Deny
Allow from all

ну и после всего этого выполните

/etc/init.d/apache2 reload

Спасибо, исправил. Теперь ошибка такая:
DB Error: connect failed

Вероятно проблема в настройке dovecot’а

Значит вы не создали БД для vexim’a. Ещё раз прочтите абзац “Теперь переходим к созданию базы для vexim’a в mysql…” и выполните требования.

Эти действия я уже проделал. Сейчас при попытке создать новую БД для vexim, система отвечает, что такая БД уже есть.

Значит неправильно указан логин или пароль к базе mysql в конфиге vexim’a. Попробуйте подключится с теми логинами и паролями в сам mysql. Для этого выполните такую команду:
mysql -u vexim_user -p vexim_db
где vexim_user – имя юзера, vexim_db – имя базы. При выполнении этой команды у вас попросит ввести пароль для юзера vexim_user. Если вы успешно войдёте, тогда у вас неправильно указан или логин или пароль или имя базы (а может и всё неправильно). Если же напишет Access denied – тогда при создании бд и пользователя вы указали другие данные.

Да, Вы правы – Access Denied. Но на все вопросы mysql я отвечал так как, Вы указали – пользователь root, пароль и т.д.
Быть может проблема в uid и gid. Скажите пожалуйста, где явно задаются номера этих групп? и можно ли исправить настройки пользователя и пароля в существующей базе данных vexim?

uid/gid к вашей проблеме пока не имеют никакого значения. У вас неправильно указан логин/пароль к базе. Вообщем выполните такие команды:
mysql -u root mysql -p
потом введите пароль root’a к mysql. Если у вас root без пароля, тогда уберите ключ ‘-p’ из последней команды. После того, как вы оказались в консоли mysql, введите такую команду и результат приведите сюда:
mysql> select host,user,password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv from user;
после этого можно будет что-то сказать.

mysql> select host,user,password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv from user;
+———–+——————+——————————————-+————-+————-+————-+————-+————-+
| host | user | password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv |
+———–+——————+——————————————-+————-+————-+————-+————-+————-+
| localhost | root | *6A0E33C173399957C8C933CB9979D07E8E70373E | Y | Y | Y | Y | Y |
| webmail | root | *6A0E33C173399957C8C933CB9979D07E8E70373E | Y | Y | Y | Y | Y |
| 127.0.0.1 | root | *6A0E33C173399957C8C933CB9979D07E8E70373E | Y | Y | Y | Y | Y |
| localhost | debian-sys-maint | *EF43A96795598FB2141C8D689DEE0B0AE73E5AF8 | Y | Y | Y | Y | Y |
| localhost | vexim | *6A0E33C173399957C8C933CB9979D07E8E70373E | N | N | N | N | N |
| localhost | roundcube | *6A0E33C173399957C8C933CB9979D07E8E70373E | N | N | N | N | N |
+———–+——————+——————————————-+————-+————-+————-+————-+————-+
6 rows in set (0.00 sec)

mysql>

Вот собственно результат запроса

Значит пользователь есть. Видимо неправильно указан пароль. Проверьте правильно ли указаны параметры доступа к БД в vexim’e. Открываем файл vexim/config/variables.php и смотрим, что у вас указано:
$sqlserver = “localhost”;
$sqltype = “mysql”;
$sqldb = “vexim”;
$sqluser = “vexim”;
$sqlpass = “ЗДЕСЬ должен быть пароль”
Укажите здесь правильно пароль и попробуйте снова подключиться. Если же всё равно не пускает, тогда следующая команда поменяет пароль юзеру vexim на новый:
mysql -u root mysql -p
потом введите пароль root’a к mysql. Если у вас root без пароля, тогда уберите ключ ‘-p’ из последней команды. После того, как вы оказались в консоли mysql, введите такую команду и результат приведите сюда:
mysql> SET PASSWORD FOR ‘vexim’@’localhost’ = PASSWORD(‘newpass’);
где newpass – новый пароль. После этого выполните команду
mysql>flush privileges;
и выйдете из mysql. Теперь укажите новый пароль в файле vexim/config/variables.php и пробуйте подключаться.

Проблема была в том, что я явно не задал пароль в $sqlpass =)
Теперь все работает, спасибо Вам огромное!

Зашел на vexim, создал домен, пользователя (админа). Пробую от него через Outlook Express доставить почту – не хочет авторизировать меня.

Логи mail.log:

2011-08-02 16:40:36 auth-worker(default): Error: mysql: Connect failed to localhost (vexim): Access denied for user ‘mail’@’localhost’ (using password: YES) – waiting for 75 seconds before retry
2011-08-02 16:40:36 auth-worker(default): Error: sql(xxxx@mgnp.info,x.x.x.x): Password query failed: Not connected to database
2011-08-02 16:40:43 pop3-login: Info: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=x.x.x.x, lip=x.x.x.x, TLS: Disconnected

В статье забыл дописать о том, как создать пользователя mail_user. Дописал. Начните читать с абзаца
Теперь нужно создать пользователя mail_user с паролем mail_pass и доступом на чтение в базу vexim.
Так же обратите внимание на то, что немного поправил конфиг exim’a, а именно строку
hide mysql_servers = localhost/vexim/mail_user/mail_pass

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

В exim’e есть замечательные инструменты для тестирования. К примеру, хочется проверить, куда пойдёт письмо, не отправляя само письмо. Для этого можно использовать такие команды:
exim -bt user@domain.com либо exim -bv user@domain.com

При попытке авторизации из Outlook Express получаем ошибку в логах mail.log:
2011-08-08 11:40:29 auth-worker(default): Error: md5_verify(****@*.info): Not a valid MD5-CRYPT or PLAIN-MD5 password
2011-08-08 11:40:35 auth-worker(default): Error: md5_verify(****@*.info): Not a valid MD5-CRYPT or PLAIN-MD5 password
2011-08-08 11:40:36 pop3-login: Info: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=94.198.193.**, lip=94.198.193.**, TLS: Disconnected

Как в exim’e проверить, в каком виде хранятся пароли? Спаасибо!

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

У меня такая ошибка была (хотя пароль вводил правильно) после обновления php. Как вылечил – пересобрал заново весь php5-* и пару раз сделал рестарт apache’a. После этого нормально.

Попробуйте тогда рестарт apache или что у вас там крутится. Если не поможет – тогда
yum remove PACKAGE
yum install PACKAGE
для php

Эти ошибки не влияют на саму работу Vexima, они не критичны.
В php.ini есть параметр – error_reporting = E_ALL & ~E_DEPRECATED
Меняете его значение на E_ALL & ~E_NOTICE
Далее ошибок которые выше в лог попадать не будут.
А у меня оказывается банальная ошибка, почему то меня замкнуло что логин должен быть exim =)
Не много подумав ввел siteadmin =)
И все поперло…

А вы не знаете почему при телнете появяляется ошибка : Connection refused
# telnet 127.0.0.1 25
Connection refused

Либо не запущен smtp сервер, либо он не слушает адрес 127.0.0.1, либо файервол блокирует доступ.

Фаервол и Се Линукс были отключены.
Оказалось что в каталог (/var/log/exim/) для лог файлов, Exim не имел прав писать. После поправки стал писать логи, и заработал телнет на 25 порту.
Также не работал телнет на 110 порту (dovecot). Лечится редактированием строчи inet_listener pop3 {
port = 0
Cтавится port = 110
После начинает работать телнет на 110 порту.

SeLinux – не должен препятствовать, поэтому его можно не отключать. В остальном – отличное дополнение.

На CentOS 6 по умолчанию ставится dovecot версии 2 beta который не умеет правильно конвертировать конфиги с первой версии до второй. Рекомендуется его обновить

Короче Vexim не заработал, заменил его на Postfixadmin. Так более ближе мне =)

при тесте с помощью этой команды exim -bt user@domain.com возникает ошибка failed to open /etc/vmail for directory search: No such file or directory что делать вроде все как у Вас

Спасибо!

Пройдитесь поиском по конфигурации по слову /etc/vmail

Я разобрался с этой проблемой,но теперь почему то выскакивает ошибка на 55 линию в exim4.conf
main option “mysql” unknown подскажите пожалуйста что делать?

54# the right thing and you need not set anything explicitly.
55mysql{ALIAS_DOMAINS}} : int.pluton.msk.ru
56primary_hostname = int.pluton.msk.ru

Видите, у вас открывающая одна скобка, а закрывающие – 2.

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

Нет, у меня ошибки нету.
строка у меня выглядит так
domainlist local_domains = ${lookup mysql{VIRTUAL_DOMAINS}} : ${lookup mysql{ALIAS_DOMAINS}} : domain.com
Почему она у вас куском – не знаю.

да это я тоже заметил,извиняюсь, исправил, теперь появилась ошибка main option “virtual_dom_groups” unknown в vexim-group-router.conf и ругается на

virtual_dom_groups:
driver = rederict
allow_fail

У вас полностью описан этот роутер? у меня так:

virtual_dom_groups:
driver = redirect
allow_fail
senders = ${if eq{Y}{${lookup mysql{select g.is_public \
from groups g, domains d \
where d.enabled = ‘1’ and d.domain = ‘${quote_mysql:$domain}’ and \
d.domain_id = g.domain_id and g.enabled = ‘1’ and \
g.name = ‘${quote_mysql:$local_part}’}}} \
{$sender_address} \
{${lookup mysql{select u.username \
from domains d, groups g, group_contents c, users u \
where d.enabled = ‘1’ and d.domain = ‘${quote_mysql:$domain}’ and \
d.domain_id = g.domain_id and g.name = ‘${quote_mysql:$local_part}’ and \
g.enabled = ‘1’ and \
g.is_public = ‘N’ and c.member_id = u.user_id and \
d.domain_id = u.domain_id and u.enabled = ‘1’ \
and u.username = ‘${quote_mysql:$sender_address}’ }}}}
data = ${lookup mysql{ \
select u.username \
from domains d, groups g, group_contents c, users u \
where d.enabled = ‘1’ and \
d.domain = ‘${quote_mysql:$domain}’ and \
d.domain_id = g.domain_id and \
g.enabled = ‘1’ and \
g.id = c.group_id and \
c.member_id = u.user_id and \
d.domain_id = u.domain_id and \
u.enabled = ‘1’ and \
g.name = ‘${quote_mysql:$local_part}’} }
local_part_suffix = -*
local_part_suffix_optional
retry_use_local_part
reply_transport = address_reply
pipe_transport = address_pipe

жа точно также,так я в этот конфиг и не лазил просто скопировал его и все как было сказано у Вас в мануале

Exim configuration error in line 8 of /etc/exim4/vexim/vexim-group-router.conf:
main option “virtual_dom_groups” unknown

Приведите полностью 7 и 8 строки из файла /etc/exim4/vexim/vexim-group-router.conf

я их приводил выше,но эта ошибка у меня пропала я по не внимательности забыл исправить адрес на /etc/exim4/vexim
но после исправления ругается теперь на vexim-acl-check-spf.conf

Exim configuration error in line 42 of /etc/exim4/vexim/vexim-acl-check-spf.conf:
main option “spf_rcpt_acl” unknown
привожу выдержку от 42 линии
spf_rcpt_acl:

# Check envelope sender

warn set acl_m8 = $sender_address
deny !acl = spf_check
warn message = Received-SPF: $acl_m7
accept

spf_from_acl:

# Check header From:

warn set acl_m8 = ${address:$h_from:}
deny !acl = spf_check
warn message = Received-SPF: $acl_m7
accept

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

Вы только на этот конфиг не смотрите, есть в Интернете другие.
У меня честно сказать тоже не завелось с вашими конфигами…
Точнее с конфигом exim4.conf, мне кажется лучше бы вы его полностью выложили здесь. Чтобы читающий блог, смог вставить текст из него в свой только что созданный exim4.conf
Это все мое ИМХО, поэтому можете не обращать.
Александр, у вас видимо последовательность описания ACL сбилась.
Exim пишет Unknown, хотя у вас вероятно уже есть это описание. Попробуйте по экспериментировать перемещая нужный ACL в конфиге exim4.conf или найдите другой рабочий конфиг.

Возьмите конфиг из vexim’a (в архиве есть готовый конфиг) и измените его как надо. Выкладывать в эту статью конфиг в пару сотен строк – смысла не вижу.

Присоединюсь к людям которые просят выложить полное содержание exim4.conf

а на gentoo не пробовали vexim ставить? просто нигде ебилда не нашол, а сам их писать не умею еще… 🙂

Скачивайте архив (там обычные php-скрипты), ставьте зависимости php. Дальше всё аналогично.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff