Архив автора: skeletor

dovecot: autoreply via sieve

В базовом функционале roundcube уже есть плагин sieve. И тут остаётся дело за малым: прикрутить это всё к dovecot+exim (via dovecot delivery). И так, ниже настройки dovecot.conf:

Читать далее

nginx: proxy_pass DNS name

При использовании proxy_pass, особенно если в качестве upstream’ов используется DNS name есть один нюанс, который хоть и описан в документации, но требует пояснения. Ниже цитата из рассылки nginx:

Читать далее

Замена диска в пуле, если пул на slice’e

Исходные данные: в пуле с дисками 500Gb построенном на slice’ах вылетел один из дисков. Новый диск — 2Tb. И так:

# zpool status rpool
  pool: rpool
 state: DEGRADED
status: One or more devices are unavailable in response to persistent errors.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or 'fmadm repaired', or replace the device
        with 'zpool replace'.
        Run 'zpool status -v' to see device specific details.
  scan: resilvered 2.20G in 4m56s with 0 errors on Fri Jan 18 07:07:30 2019

config:

        NAME          STATE      READ WRITE CKSUM
        rpool         DEGRADED      0     0     0
          mirror-0    DEGRADED      0     0     0
            c3t1d0s0  UNAVAIL       0     0     0
            c3t0d0s0  ONLINE        0     0     0

errors: No known data errors

Читать далее

[dovecot] Cached message size larger than expected

Если кратко, то данная ошибка говорит, что размер письма отличается от ожидаемого. Такое поведение возникает, если содержимое файла письма изменилось (случайно или преднамеренно). При этом разные клиенты могут по-разному отображать это письмо: частично или вообще никак (показывать ошибку). В сети почти все варианты решения выглядят так: удалите из папки Maildir файлы dovecot.* и перезапустите dovecot (dovecot перепланирует папку и создаст заново эти файлы). Такой рецепт подойдёт, если у вас старая версия, до 2.0.X включительно. Но если у вас версия 2.1.Х, то это не поможет.

Читать далее

pure-authd и большая нагрузка

pure-authd очень удобный механизм для внешней аутентификации. Но при большой нагрузке это может стать реальной проблемой: он однопоточный. Да, он все запросы складывает в свой backlog, но легче от этого не становится. И вы можете ждать своей очереди на аутентификацию и минуту и две и больше. Но у большинства ftp-клиентов таймаут на аутентификацию стоит в 20 секунд, поэтому это не вариант на высоких нагрузках.

Читать далее

Nginx: listen socket

Ниже будут выдержки цитат из рассылки nginx, которые объясняют простые вещи при открытии/переоткрытии сокета не только в случае nginx’a, а и некоторых общих случаях.

Читать далее

eBPF: трассируем приложения

The Berkeley Packet Filter (BPF) started (article 1992) as a special-purpose virtual machine (register based filter evaluator) for filtering network packets, best known for its use in tcpdump. It is documented in the kernel tree, in the first part of: Documentation/networking/filter.txt

The extended BPF (eBPF) variant has become a universal in-kernel virtual machine, that has hooks all over the kernel. The eBPF instruction set is quite different, see description in section “BPF kernel internals” of Documentation/networking/filter.txt or look at this presentation by Alexei.

eBPF enables programmers to write code which gets executed in kernel space in a more secure and restricted environment. Yet this environment enables them to create tools which otherwise would require writing a new kernel module.

Ссылки на материалы:

https://eax.me/bcc-ebpf/
https://habr.com/ru/post/435142/
https://habr.com/ru/company/otus/blog/436528/

[exim] DKIM/SPF: white list

Определяем переменные:

domainlist spf_white_list = domain1.com : domain2.com
domainlist dkim_white_list = other1.com : other2.com

Описываем сам white list для SPF (ОБЯЗАТЕЛЬНО ПЕРЕД ПРОВЕРКОЙ SPF):

acl_check_data:
...
# SPF whitelist
accept sender_domains = +spf_white_list
logwrite = SPF: domain <$sender_address_domain> is whitelisted

Описываем сам white list для DKIM (ОБЯЗАТЕЛЬНО ПЕРЕД ПРОВЕРКОЙ DKIM):

acl_check_dkim:
...
accept sender_domains = +dkim_white_list
logwrite = DKIM: domain <$sender_address_domain> is whitelisted