dovecot + sendmail + roundcube + managesieve

The goal of this article: make email forwarding on existing mail setup

 

Okay начнем. Что я имел:

  • sendmail + dovecot. Каким-то чудом работающая связка, которую я настроил впопыхах для домена @mycompany.com. Не особо заморачиваясь. Работает и ладно. Юзеры для mailboxes используются unix users. Вроде можно по-другому, но не суть

Требовалось завести новые ящики на @subdomain.mycompany.com и сделать с них фул редирект на @company.com. Казалось бы, задача легче некуда. Подумало дитя Gmail for business.

 

Сначала решил поставить для удобства веб морду (что оказалось весьма кстати впоследствии). Выбран roundcube, ставится в пару кликов скачиванием и распаковкой в /var/www/html

wget https://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.4/roundcubemail-1.1.4-complete.tar.gz

tar xvf roundcubemail-1.1.4-complete.tar.gz

mv roundcubemail-1.1.4 /var/www/html

 

В этой поставке уже шел набор плагинов: managesieve, passwords , я скачал еше filters (оказалось бесполезным). Подрубаем плагины к roundcube добавлением их в список:

/var/www/html/roundcubemail/config/config.inc.php

// List of active plugins (in plugins/ directory)
$config[‘plugins’] = array(
‘archive’,
‘password’,
‘filters’,
‘managesieve’,
);

Если используются unix users в качестве пользователей и хочется менять пароли через roundcube, то необходимо

  1. /etc/sudoers.d/99-roundcubemail

apache ALL=NOPASSWD:/usr/sbin/chpasswd
Defaults:apache !requiretty

2. /var/www/html/roundcubemail/plugins/password/config.inc.php

// A driver to use for password change. Default: «sql».
// See README file for list of supported driver names.
$config[‘password_driver’] = ‘chpasswd’;

 

Иначе он будет пытаться менять пароль через sql.

 

Окей, переходим к самому стремному.

yum install dovecot-pigeonhole

В файле /etc/dovecot/conf.d/20-lmtp.conf добавляем поддержку sieve

protocol lmtp {
# Space separated list of plugins to load (default is global mail_plugins).
postmaster_address = postmaster@rden.me
mail_plugins = $mail_plugins sieve
}

Проверяемм, чтобы сервис lmtp был разрешен в /etc/dovecot/conf.d/10-master.conf

service lmtp {
unix_listener lmtp {
#mode = 0666
}

# Create inet listener only if you can’t use the above UNIX socket
#inet_listener lmtp {
# Avoid making LMTP visible for the entire internet
#address =
#port =
#}
}

В файле /etc/dovecot/dovecot.conf проверяем наличие lmtp

# Protocols we want to be serving.
protocols = imap lmtp
В файле /etc/dovecot/conf.d/10-master.conf в секции service auth проверяем существование записи

unix_listener auth-userdb {
mode = 0600
}

сверяем /etc/dovecot/conf.d/20-managesieve.conf

# Uncomment to enable managesieve protocol:
protocols = $protocols sieve

service managesieve-login {
inet_listener sieve {
port = 4190
}
service_count = 1

service managesieve {
# Max. number of ManageSieve processes (connections)
process_limit = 10
}

protocol sieve {
# Maximum ManageSieve command line length in bytes. ManageSieve usually does
# not involve overly long command lines, so this setting will not normally
# need adjustment.
#managesieve_max_line_length = 65536

# Maximum number of ManageSieve connections allowed for a user from each IP
# address.
# NOTE: The username is compared case-sensitively.
mail_max_userip_connections = 10
}

Настроим параметры  sieve. Файл /etc/dovecot/conf.d/90-sieve.conf

sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_max_script_size = 1M
sieve_max_actions = 32
sieve_max_redirects = 4
sieve_quota_max_scripts = 10

В этом моменте после рестарта httpd, dovecot и всего остального, у вас уже будет в roundcube вот такая тема:

roundcube_iface

Точнее будет только набор managesieve, а вот фильтры вы добавите сами по своему усмотрению. Я, например, всю входящую почту сначала копирую в INBOX, а затем пересылаю куда требовалось. (copy and forward rules)

 

Но (сюрприз сюрприз), работать это нихчего не будет. Потому что sendmail понятия не имеет об этих фильтрах. Это было сука так мучительно обнаружить и понять, но фиксим:

Проверяем на соответствие строчки в /etc/mail/sendmail.mc

MAILER(procmail)dnl
MODIFY_MAILER_FLAGS(`LOCAL’, `-f’)dnl
FEATURE(`local_procmail’, `/usr/libexec/dovecot/dovecot-lda’,`/usr/libexec/dovecot/dovecot-lda -d $u’)dnl

И проверяем вот здесь

/etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp sieve
mail_location = maildir:~/Maildir
lda_mailbox_autocreate = yes

Теперь все должно бегать. Ах да. Не стал заморачиваться насчет этого, но каждому юзеру придется вот в этой мордашке rouncube зайти и активировать фильтры managesieve. Поскольку я просто разложил готовые наборы правил в ~/sieve/managesieve.sieve файлики каждому юзеру и они оказались disabled . Активируется одной кнопочкой, ну а как избежать ручной работы это уже совсем другая история

 

____

AskDevops —> https://t.me/ithangouts

Добавить комментарий

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