Рассылка писем через sendmail в Solaris

Появилась задача быстро поднять почтовый сервер с минимальными телодвижениями. Поскольку уже стоял Sendmail, то решили использовать его.

1. Указываем нужный домен для отправки:

В файле /etc/mail/sendmail.cf вносим домен для отправки:

# change sender domain
Djdomain.com
Dwdomain
Dkdomain.com

Читать далее

PG_CHAMELEON: replication from mysql to postgresql

pg_chameleon is a MySQL to PostgreSQL replica system written in Python 3. The tool can connect to the mysql replication protocol and replicate the data changes in PostgreSQL. Whether the user needs to setup a permanent replica between MySQL and PostgreSQL or perform an engine migration, pg_chamaleon is the perfect tool for the job.

AQUATONE — ищем поддомены консольно

AQUATONE is a set of tools for performing reconnaissance on domain names. It can discover subdomains on a given domain by using open sources as well as the more common subdomain dictionary brute force approach. After subdomain discovery, AQUATONE can then scan the hosts for common web ports and HTTP headers, HTML bodies and screenshots can be gathered and consolidated into a report for easy analysis of the attack surface.

https://github.com/michenriksen/aquatone/

[zfs] Illumos/Linux: ignore read/checksum errors when sending data

Поддержка этой опции есть пока в Illumos/Linux (FreeBSD/Solaris пока её не имеют). Эта опция позволяет пропускать ошибки чтения/записи при переносе повреждённого снепшота (очень спасает, если у вас повредился пул, а данные с него нужно вытащить).

Читать далее

[nginx] rewrite: $host or $server_name

Очень часто это является проблемой при построении редиректов, когда у вас больше 1 домена. Следующая конструкция выглядит работоспособной:

return 301 https://$server_name$request_uri;

Всё работает, когда у вас всего 1 домен в server_name. А когда 2 и больше, то для них redirect работает не правильно (он редиректит на самый первый домен в server_name). А всё потому, что нужно вместо $server_name использовать хост. В документации написано следующее:

  • $server_name: имя сервера, принявшего запрос
  • $host: в порядке приоритета: имя хоста из строки запроса, или имя хоста из поля “Host” заголовка запроса, или имя сервера, соответствующего запросу

Читать далее

[solaris] История о слетевшем загрузчике

Был один сервер и на нём, в зеркальном пуле вывалился один из дисков. В момент замены и процесса перестроения вылетает второй диск. Немного не штатная ситуация, но я дождался окончания перестроения, удалил файлы, на которые ругался пул, сделал ему scrub, ошибки с диска пропали, но пул всё равно в состоянии degraded (так как диск второй вылетел). Выключаю сервер, меняю диск и тут на тебе: не грузится (не найдет загрузочный диск).

Читать далее

REUSEPORT

Что такое REUSEPORT? Если кратко, то в много поточном приложении позволяет каждому потоку напрямую привязаться к tcp socket’y (адрес:порт). Это позволяет быстрее принимать пакеты (без REUSEPORT пришлось бы получать пакеты через мастер-процесс).

В статье рассмотрим, как можно узнать/понять, использует ли ваше приложение REUSEPORT штатными средствами ОС. О том, как обстоит поддержка REUSEPORT в разных ОС написана очень неплохая статья, но вот касательно Solaris данные там устаревшие.

Читать далее

[openzfs] Ускоряем resilver/scrub/destroy

Если значения по умолчанию вам не очень подходят:

int zfs_top_maxinflight = 32;           /* maximum I/Os per top-level */
int zfs_resilver_delay = 2;             /* number of ticks to delay resilver */
int zfs_scrub_delay = 4;                /* number of ticks to delay scrub */
int zfs_scan_idle = 50;                 /* idle window in clock ticks */
int zfs_scan_min_time_ms = 1000;        /* min millisecs to scrub per txg */
int zfs_free_min_time_ms = 1000;        /* min millisecs to free per txg */
int zfs_resilver_min_time_ms = 3000;    /* min millisecs to resilver per txg */
int zfs_no_scrub_io = B_FALSE;          /* set to disable scrub i/o */
int zfs_no_scrub_prefetch = B_FALSE;    /* set to disable srub prefetching */

Читать далее