Архив метки: freebsd

Включаем поддержку SSL в Postfix, FreeBSD 10.x

Предыдущий пост (включение подписи DKIM) не помог избавиться от попадания в папку СПАМ на ящиках gmail, поэтому следующим этапом попробуем включение принудительного шифрования писем SSL на домене.

Сначала сделаем самоподписный сертификат:

openssl req -new -nodes -x509 -out /usr/local/etc/postfix/smtpd.pem -keyout /usr/local/etc/postfix/smtpd.pem -days 3650

Добавляем в Postfix поддержку SSL:

mcedit /usr/local/etc/postfix/main.cf
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/local/etc/postfix/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

В файле /usr/local/etc/postfix/master.cf нужно добавить:

smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

и перестартовать postfix

Настройка DKIM подписи на FreeBSD 10.4 почтовый сервер Postfix

Зачем она нужна? Например для того чтобы почтовые сервера gmail.com, mail.ru и ряд других не отправляли письма с вашего домена в папку «спам».

Ставим opendkim:

pkg install opendkim

Создадим файл конфигурации opendkim на основе примера:

cat /usr/local/etc/mail/opendkim.conf.sample | egrep -v '^#|^$' > /usr/local/etc/mail/opendkim.conf
mcedit /usr/local/etc/mail/opendkim.conf

Получим файл вида:

Domain			example.com
KeyFile			/var/db/dkim/example.private
Selector		my-selector-name
Socket			inet:port@localhost
Syslog			Yes

Преобразуем его к виду:

Domain			domen.ru
KeyTable			/var/db/dkim/KeyTable
SigningTable		/var/db/dkim/SigningTable
ExternalIgnoreList	/var/db/dkim/TrustedHosts
Selector		relay
Socket			inet:12301@localhost
Canonicalization	relaxed/relaxed
Syslog			Yes

В файл /var/db/dkim/TrustedHosts добавим хосту с которых разрешены подключения:

*.domen.ru
127.0.0.1
localhost

Создаем каталог для хранения ключей и создаем собственно сами ключи:

mkdir -p /etc/opendkim/domen.ru
opendkim-genkey -D /etc/opendkim/tviinet.ru/ --domain tviinet.ru --selector relay

Создадим пользователя opendkim,зададим владельца и права доступа на файлы:

pw useradd opendkim -m -s /usr/sbin/nologin -w no
chown :opendkim /etc/opendkim/domen.ru/*
chmod g+rw /etc/opendkim/domen.ru/*

Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:
<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>

mcedit /var/db/dkim/KeyTable

Например:

relay._domainkey.tviinet.ru domen.ru:relay:/etc/opendkim/tdomen.ru/relay.private

Создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.

mcedit /var/db/dkim/SigningTable

Добавляем в него:

*@domen.ru relay._domainkey.domen.ru

Далее пробуем стартовать сервис:

/usr/local/etc/rc.d/milter-opendkim onestart

Если всё хорошо, правим конфигурацию postfix:

mcedit /usr/local/etc/postfix/main.cf

Добавляем:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

Перезапускаем postfix:

/usr/local/etc/rc.d/postfix restart

Если всё хорошо, остался последний шаг: правка DNS. Посмотрим содержимое:

cat /etc/opendkim/domen.ru/relay.txt

relay._domainkey	IN	TXT	( "v=DKIM1; k=rsa; "
	  "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPHo37kaZ6zTfi8pZUE2QIDAQAB" )  ; ----- DKIM key relay for domen.ru

Добавим эту запись в зону TXT  DNS. И пробуем отправить письмо например на gmail.com. В «исходном письме» должна присутствовать запись о DKIM.

 

Nginx как front-end к apache (апач через прокси nginx) FreeBsd

На одном из серверов пробую ускорить сайт на drupal + модуль Commerce. Mysql уже потюнил. Memcached установлен. Закешировано почти всё что можно. Но! тормозит.. Как жест отчаянья, попробую еще и через nginx пустить статику. Вдруг хоть чуток но полегчает..

1. В httpd.conf меням порт Listen с 80 на 8080. Тоже самое меняем в вирутальных хостах <VirtualHost *:8080>

2. Ставим nginx, ставим в автостарт

pkg install nginx
sysrc nginx_enable=yes

3. Правим файл конфигурации nginx (/usr/local/etc/nginx/nginx.conf)

server {
        listen       80;
        server_name  www.domen.ru;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#вот это динамика, пусть её занимается апач
        location / {
	    proxy_pass http://domen:8080;
	    proxy_set_header Host $host;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $remote_addr;
	    proxy_connect_timeout 120;
	    proxy_send_timeout 120;
	    proxy_read_timeout 180;
        }
# Вот это считаем статикой
        location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
	    root /usr/local/www/apache24/sites/centrtricolor;
	}
...
/usr/local/etc/rc.d/apache2 restart
/usr/local/etc/rc.d/ngnix restart

FreeBSD: common.c: unimplemented subshell type 1

При запуске mc, не из по root, в консоль вываливается ошибка вида:

common.c: unimplemented subshell type 1

Способ лечения: установить mc из портов:

cd /usr/ports/misc/mc
make config

В меню при настройке сборки отключить SUBSHELL Build with subshell support

<code>make install clean</code>

LAMP для FreeBSD 12 (Drupal 8-WordPress 5)

Apache:

pkg install apache24
sysrc apache24_enable=yes

Правим /usr/local/etc/apache24/httpd.conf, устанавливая ServerName и ServerAdmin. Далее можно запускать:

service apache24 start

Mysql 8:

pkg install mysql81-server
sysrc mysql_enable=yes
service mysql-server start
mysql_secure_installation

для того чтобы работало старое ПО (новая схема аутенфикации), можно выставить режим совместимости:

mcedit /usr/local/etc/mysql/my.cnf
<code>[mysqld]
...
default_authentication_plugin   = mysql_native_password
...</code>
/usr/local/etc/rc.d/mysql-server restart

Memcached:

pkg install memcached_enable
sysrc memcached_enable=yes
service memcached start

PHP:

pkg install php73-bcmath php73-tokenizer php73-memcache php73-pdo php73-pdo_mysql mod_php73 php73-hash php73-mysqli php73-zip php73-openssl php73-mbstring php73-mysqli php73-json php73-iconv php73-gd php73-curl php73-dom php73-curl

В /usr/local/etc/apache24/httpd.conf добавим:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
/usr/local/etc/rc.d/apache24 restart