При использовании proxy_pass, особенно если в качестве upstream’ов используется DNS name есть один нюанс, который хоть и описан в документации, но требует пояснения. Ниже цитата из рассылки nginx:
При использовании proxy_pass, особенно если в качестве upstream’ов используется DNS name есть один нюанс, который хоть и описан в документации, но требует пояснения. Ниже цитата из рассылки nginx:
Исходные данные: в пуле с дисками 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
Если кратко, то данная ошибка говорит, что размер письма отличается от ожидаемого. Такое поведение возникает, если содержимое файла письма изменилось (случайно или преднамеренно). При этом разные клиенты могут по-разному отображать это письмо: частично или вообще никак (показывать ошибку). В сети почти все варианты решения выглядят так: удалите из папки Maildir файлы dovecot.* и перезапустите dovecot (dovecot перепланирует папку и создаст заново эти файлы). Такой рецепт подойдёт, если у вас старая версия, до 2.0.X включительно. Но если у вас версия 2.1.Х, то это не поможет.
pure-authd очень удобный механизм для внешней аутентификации. Но при большой нагрузке это может стать реальной проблемой: он однопоточный. Да, он все запросы складывает в свой backlog, но легче от этого не становится. И вы можете ждать своей очереди на аутентификацию и минуту и две и больше. Но у большинства ftp-клиентов таймаут на аутентификацию стоит в 20 секунд, поэтому это не вариант на высоких нагрузках.
Ниже будут выдержки цитат из рассылки nginx, которые объясняют простые вещи при открытии/переоткрытии сокета не только в случае nginx’a, а и некоторых общих случаях.
Нашёл хорошую статью на эту тему. Данный функционал появился, начиная с 11.3
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/
Определяем переменные:
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
Будем искать через mdb. Что бы иметь возможность это сделать, нужно что бы приложение было запущено в режиме debug. Если в самом приложении отсутствует такая возможность, тогда нужно включить его в окружении и потом запустить приложение:
$ export LD_PRELOAD=libumem.so $ export UMEM_DEBUG=default $ export UMEM_LOGGING=transaction
Причём не только с расширением “.sh”, а вообще с любым. Это поведение по умолчанию и при этом задокументировано! Вот выдержка из man’a:
If neither the –lsbsysinit option nor the –regex option is given then the names must consist entirely of upper and lower case letters, digits, underscores, and hyphens.