Заметки по AcyMailling

You can modify your tag to order your articles by “hits”, so the most popular content will be displayed. This tag will display the introduction of the first 20 most popular articles: 1 {autocontent:sec0|max:20|order:hits,DESC|type:intro|link|pict:1}

11 грудня 2017 · 1 хвилина · 34 слів · dimetrius

Использование истории команд в BASH на LINUX

Вступление В серверной среде работа с командной строкой занимает много времени. Часто используется оболочка bash – командная оболочка по умолчанию большинства дистрибутивов. Вероятно, во время терминальной сессии общие команды будут повторяться часто, а вариации данных команд – еще чаще. Конечно, сначала набирать каждую команду вручную очень полезно, так как это – лишняя возможность попрактиковаться, но в какой-то момент это начинает надоедать и раздражать. К счастью, bash-оболочка имеет некоторые довольно хорошо разработанные функции истории. Умение продуктивно использовать и управлять историей в bash позволяет тратить меньше времени на ввод команд, и тем самым увеличивает объем выполненной работы. Как известно, среди разработчиков популярен так называемый принцип DRY (Don’t Repeat Yourself). Продуктивное использование истории в bash помогает работать с информацией согласно данному принципу. Это руководство демонстрирует все функции на Linux Ubuntu 12.04, но почти все современные дистрибутивы Linux будут работать подобным образом. Настройки истории в bash Прежде чем использовать историю, нужно отредактировать некоторые настройки bash, чтобы сделать ее более применимой. Bash позволяет редактировать количество предыдущих команд, которые нужно сохранить в истории. Для этого в bash есть две отдельные опции: параметр «HISTFILESIZE» задает количество команд, хранящихся в файле истории, а «HISTSIZE» указывает количество команд, которое сохраняется в памяти для текущей сессии. Это означает, что в памяти можно установить разумные пределы размера истории для текущего сеанса, а также хранить более объемную историю на диске для дальнейшего использования. ...

8 жовтня 2017 · 12 хвилин · 2365 слів · dimetrius

Vim - подсветка синтаксиса принудительно

Есть у моего любимого редактора vim под linux возможность подсветки синтаксиса. Но, почему-то, в Ubuntu всегда была включена одна из подсветок синтаксиса по умолчанию. Как оказалось, в Ubuntu для пользователя root по умолчанию отключена возможность выбора подсветки синтаксиса по данным из файла. Итак, первоначально нам нужно в файл /etc/vim/vimrc добавить строки 1 2 set modeline set modelines=5 Первая включает этот режим, а вторая изменяет кол-во строк в начале/в конце файла для поиска параметров. Далее изменяем файл, в котором хотим видеть подсветку синтаксиса по умолчанию. В моём случае это файл /etc/exim4/exim4.conf Добавляем по возможности на первой, или последней строках (хотя у нас указано искать на 5 строчках) параметры: 1 # vim: syntax=exim ts=4 sw=4 sts=4 sr noet Обращаю ваше внимание что до и после “vim:” должны быть пробелы. Строка может экранироваться каким угодно образом, обычно это зависит от типа файла и софта, использующего его. В нашем случае это # в начале строки. Или могут использоваться подобные варианты: 1 2 3 4 5 6 // vim: noai:ts=4:sw=4 -или- /* vim: noai:ts=4:sw=4 */ -или- /* vim: set noai ts=4 sw=4: */

17 серпня 2017 · 1 хвилина · 178 слів · dimetrius

Strace нескольких процессов одновременно

Иногда бывает так что, на первый взгляд, начинает без причины падать apache, или php-fpm. Никакие CoreDump в этом могут не помогать. Часто этот процесс представляет собой связку процессов и мониторить их необходимо все, так как заранее неизвестно, каким из процессов будет отработан наш запрос. На этот случай strace умеет принимать набор pid’ов процессов, на каждый процесс свой аргумент -p. Получаем список всех процессов по имени: 1 pidof apache2 Собираем список аргументов: 1 pidof apache2 | sed 's/\([0-9]*\)/\-p \1/g' Вызываем strace: 1 strace -s 1024 -f $(pidof apache2 | sed 's/\([0-9]*\)/\-p \1/g') На CentOS имя процесса другое: 1 strace -s 1024 -f $(pidof httpd | sed 's/\([0-9]*\)/\-p \1/g') Для трейса php-cgi процессов команда будет следующая: 1 strace -s 1024 -f $(pidof php5-cgi | sed 's/\([0-9]*\)/\-p \1/g') А вот более гибкий вариант для выборки процессов по регулярному выражению: 1 strace -s 1024 -f $(pgrep php5-fastcgi | sed 's/\([0-9]*\)/\-p \1/g') А для Nginx: 1 strace -s 1024 -f $(pidof nginx | sed 's/\([0-9]*\)/\-p \1/g') Для php5-fpm: 1 strace -s 1024 -f $(pidof php5-fpm | sed 's/\([0-9]*\)/\-p \1/g') Для Apache wsgi: 1 strace -s 1024 -f $(ps aux|grep wsgi|grep -v 'grep'|awk '{print $2}'| sed 's/\([0-9]*\)/\-p \1/g')

11 серпня 2017 · 1 хвилина · 192 слів · dimetrius

Авторизация Exim+Dovecot+PostfixAdmin

Я в процессе настройки своего почтового сервера. Эта заметка касается авторизации, которая допускает не шифрованный пароль и шифрованный. Используется Exim4 + Dovecot2 + PostfixAdmin 1. Файл /etc/exim4/exim4.conf - ставишь такую секцию которую я привел: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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 = $auth2 auth_cram_md5: driver = dovecot public_name = CRAM-MD5 server_socket = /var/run/dovecot/auth-client server_set_id = $auth3 2. В файле /var/www/html/postfixadmin/config.inc.php меняешь настройки алгоритмов на: 1 2 $CONF['encrypt'] = 'dovecot:CRAM-MD5'; $CONF['dovecotpw'] = "/usr/bin/doveadm pw"; 3. Файл /var/www/html/roundcube/config/main.inc.php - меняешь алгоритм на cram-md5: 1 $rcmail_config['imap_auth_type'] = cram-md5; 4. Файл /etc/dovecot/dovecot.conf - меняешь алгоритмы авторизации на plain,login и cram-md5: 1 auth_mechanisms = plain login cram-md5 5. Файл /etc/dovecot/dovecot-mysql.conf - ставишь: 1 default_pass_scheme = CRAM-MD5 Так же можно авторизоваться Exim’ом непосредственно в Mysql базе данных (но у меня этот способ не особо заработал): ...

11 серпня 2017 · 2 хвилин · 273 слів · dimetrius

Проверка DKIM для входящих писем Exim

Продолжаю настройку своего почтового сервера. В этой заметке речь будет о проверке DKIM у входящих сообщений с помощью Exim. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 # Добавляем в список ACL для обработки: acl_smtp_dkim = acl_check_dkim # ... # Можно разместить в начале, где задаются переменные для DKIM-отправки # Это значит, чьи подписи мы будем точно проверять DKIM_KNOWN_SIGNERS = paypal.com : gmail.com dkim_verify_signers = $dkim_signers : KNOWN_DKIM_SIGNERS # ... # Создаем сам ACL в секции "begin acl" # ... # DKIM check acl_check_dkim: accept hosts = +relay_from_hosts accept authenticated = * # Message without sign accept dkim_status = none condition = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}} set acl_c_dkim_hdr = 1 add_header = :at_start:X-DKIM: Exim 4.71 on $primary_hostname (no dkim signature) # Message with sign, begin warn condition = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}} set acl_c_dkim_hdr = 1 add_header = :at_start:X-DKIM: Exim 4.71 on $primary_hostname # Message with sign, bad signature deny dkim_status = fail message = Rejected: $dkim_verify_reason logwrite = X-Auth: DKIM test failed: (address=$sender_address domain=$dkim_cur_signer), signature is bad. # Message with sign, invalid signature accept dkim_status = invalid add_header = :at_start:Authentication-Results: $primary_hostname $dkim_cur_signer ($dkim_verify_status); $dkim_verify_reason logwrite = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), but signature is invalid. # Message with sign, good signature accept dkim_status = pass add_header = :at_start:Authentication-Results: $primary_hostname; dkim=$dkim_verify_status header.i=@$dkim_cur_signer logwrite = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), good signature. accept

10 серпня 2017 · 2 хвилин · 262 слів · dimetrius

Заметки по sed

Иногда приходится выполнять сложные замены в конфигурационных файлах. Для подобных целей создана эта заметка. Замена всей строки, которая содержит подстроку 1 sed -i '/location \~.*/c\ location \~\* \^\.\+\\\.(jpg\|gif\|png\|css\|js\|woff2\|woff\|ico|json\)$ {' vhost.conf

14 липня 2017 · 1 хвилина · 30 слів · dimetrius

Упорядочивание и изменение имён сетевых интерфейсов Ubuntu 16.04 LTS

В ранних версиях Ubuntu 16.04 сетевые устройства именуются в зависимости от информации из их BIOS. Это может быть enp6s0, wlp7s0 и тому подобное. Для изменения имён на привычные всем ethX требуется выполнить несколько шагов. 1 vim /etc/default/grub​ Добавляем в строку 1 GRUB_CMDLINE_LINUX=""​ параметры 1 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"​ После этого выполняем 1 $ sudo update-grub​ и перезагружаем ОС 1 $ sudo reboot​ Уже сейчас мы получаем сетевые интерфейсы с именами ethX. Но нас может не устраивать порядок интерфейсов, или же порядок интерфейсов может изменяться после каждой перезагрузки. В таком случае выполняем ещё один шаг. Создаём файл $ sudo gedit /etc/udev/rules.d/70-persistent-net.rules​ с примерным содержимым 1 2 3 4 5 6 7 8 9 10 11 # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device lan Device SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ethX" # PCI device Wlan Device SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlanX" Здесь нужно изменить MAC адрес реального вашего устройства и ethX, wlanX на желаемые вами eth0, eth1, wlan0 и так далее. Снова перезагружаемся $ sudo reboot ...

30 червня 2017 · 2 хвилин · 215 слів · dimetrius

OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья. Подготовка Работать будем с Debian 8.7. Если у вас другой дистрибутив, то версии должны быть такие же или более новые. 1 2 3 4 5 6 7 8 # lsb_release -d Description: Debian GNU/Linux 8.7 (jessie) # openssl version OpenSSL 1.0.1t 3 May 2016 # nginx -V nginx version: nginx/1.6.2 Настроим nginx для получения сертификатов от Let’s Encrypt по инструкции, но только до получения сертификата для нашего домена. 1 certbot certonly -d example.com -d www.example.com Конфиг используем минимальный. Ничего лишнего. Всё по умолчанию. 1 2 3 4 5 6 7 8 server { server_name www.example.com example.com; listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; } Теперь прогоним тест для этого сервера. ...

4 квітня 2017 · 11 хвилин · 2334 слів · dimetrius

Разные версии PHP на одной системе с Ubuntu

Вы можете использовать PPA для использования современных версий PHP, или установки прошлой версии PHP. (Например PHP 5.6 на Ubuntu 16.04 LTS) Наиболее часто используется репозиторий от Ondřej Surý, Debian PHP разработчика: ppa:ondrej/php (для PHP 5.6/7.0/7.1 и их подверсий, PHP 5.5 больше не поддерживается официально) Пакет совместимости php5: ppa:ondrej/php5-compat (для подмены php5 что бы разрешить зависимости со старыми пакетами (не точный перевод)) PHP PPA раньше содержал в себе Apache 2.4 обновления. Больше этих обновлений нет, они находятся в отдельном репозитории Apache 2.4: ppa:ondrej/apache2 (для Apache 2.4) Если вы всё же хотите использовать этот PPA, сделайте следующее: ppa:ondrej/php (для PHP 5.6/7.0/7.1) 1 2 3 4 5 6 sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get upgrade sudo apt-get install php7.1 # для PHP 7.1 sudo apt-get install php7.0 # для PHP 7.0 sudo apt-get install php5.6 # для PHP 5.6​ ppa:ondrej/php5-compat (для php5 compat) 1 2 3 4 5 sudo add-apt-repository ppa:ondrej/php sudo add-apt-repository ppa:ondrej/php5-compat sudo apt-get update sudo apt-get upgrade sudo apt-get install php5 # это установит php5.6 пакет ​ Если у вас нет add-apt-repository, выполните следующее: sudo apt-get install python-software-properties Самая последняя версия PHP 5.4 сейчас находится в отдельном репозитории PPA: ppa:ondrej/php5-oldstable ...

6 березня 2017 · 2 хвилин · 231 слово · dimetrius