Если вам быстро нужно установить и настроить почтовый сервер под 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
где 101 – UID пользователя Debian-exim (пользователь, от которого работает exim) и 103 – GID группы 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’а
Это где такая ошибка? В dovecot’e? Или в roundcub’e?
Ошибка возникает при наборе в адресной строке браузера http://ip-адрес сервера/vexim
Значит вы не создали БД для 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 проверить, в каком виде хранятся пароли? Спаасибо!
Вообще-то почитать про разные типы шифрования и посмотреть структуру хеша. Но если вы сами не можете определить, приведите сюда хеш и я попробую помочь.
А как можно посмотреть структуру хеша?
Опечатко в uid gid vexim`a
Нету опечатки.
угу, сорь )
А как с такой ошибкой бороться?
[error] [client 127.0.0.1] PHP Notice: Undefined index: realname in /var/www/html/vexim/config/variables.php on line 63, referer: http://127.0.0.1/vexim/index.php?login=failed
У меня такая ошибка была (хотя пароль вводил правильно) после обновления php. Как вылечил – пересобрал заново весь php5-* и пару раз сделал рестарт apache’a. После этого нормально.
Как на CentOS пересобрать интересно…
Попробуйте так:
yum update php
Пишет:
No Packages marked for Update
Попробуйте тогда рестарт apache или что у вас там крутится. Если не поможет – тогда
yum remove PACKAGE
yum install PACKAGE
для php
Это тоже делал:
yum remove php
yum install 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 – не должен препятствовать, поэтому его можно не отключать. В остальном – отличное дополнение.
У вас Dovecot первой версии или второй ?
Первой.
Сконвертировал ваш конфиг командой:
doveconf -n -c dovecot.conf > dovecot-new.conf
На 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
а по какой конфигурации?в exim4.conf нету,где еще может быть?
Я разобрался с этой проблемой,но теперь почему то выскакивает ошибка на 55 линию в exim4.conf
main option “mysql” unknown подскажите пожалуйста что делать?
Приведите строки 54, 55
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 или найдите другой рабочий конфиг.
+1
выложите весь конфиг exim’a
Возьмите конфиг из vexim’a (в архиве есть готовый конфиг) и измените его как надо. Выкладывать в эту статью конфиг в пару сотен строк – смысла не вижу.
Присоединюсь к людям которые просят выложить полное содержание exim4.conf
Слишком много разных замен в разный местах конфига exim
Можно получить конфиг через сторонний сервис?
http://pastebin.com/
https://gist.github.com/
http://1dl.us/
Можно, пишите через форму обратной связи.
а на gentoo не пробовали vexim ставить? просто нигде ебилда не нашол, а сам их писать не умею еще… 🙂
Скачивайте архив (там обычные php-скрипты), ставьте зависимости php. Дальше всё аналогично.