Почтовая связка 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

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

  1. Antoninio

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

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

  2. Antoninio

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

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

  3. skeletor Автор записи

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

    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

  4. Antoninio

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

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

  5. skeletor Автор записи

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

  6. Antoninio

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

  7. skeletor Автор записи

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

  8. Antoninio

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

  9. skeletor Автор записи

    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;
    после этого можно будет что-то сказать.

  10. Antoninio

    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>

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

  11. skeletor Автор записи

    Значит пользователь есть. Видимо неправильно указан пароль. Проверьте правильно ли указаны параметры доступа к БД в 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 и пробуйте подключаться.

  12. Antoninio

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

  13. Antoninio

    Зашел на 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

  14. skeletor Автор записи

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

  15. Antoninio

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

  16. skeletor Автор записи

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

  17. Antoninio

    При попытке авторизации из 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 проверить, в каком виде хранятся пароли? Спаасибо!

  18. skeletor Автор записи

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

    1. skeletor Автор записи

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

    1. skeletor Автор записи

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

  19. Margarito

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

  20. Margarito

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

    1. skeletor Автор записи

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

      1. Margarito

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

        1. skeletor Автор записи

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

  21. Margarito

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

  22. Margarito

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

  23. Алексей

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

    Спасибо!

  24. Алексей

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

  25. Алексей

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

    1. skeletor Автор записи

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

  26. Алексей

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

  27. skeletor Автор записи

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

  28. Алексей

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

    virtual_dom_groups:
    driver = rederict
    allow_fail

    1. skeletor Автор записи

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

      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

  29. Алексей

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

  30. Алексей

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

    1. skeletor Автор записи

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

  31. Алексей

    я их приводил выше,но эта ошибка у меня пропала я по не внимательности забыл исправить адрес на /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

  32. Алексей

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

  33. Margarito

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

    1. skeletor Автор записи

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

  34. Алексей

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

  35. Эльф

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

    1. skeletor Автор записи

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

Добавить комментарий для Margarito Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *