Как установить и включить mbstring

Чтобы установить mbstring в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-mbstring

В CentOS так:

sudo yum install php-mbstring

Активировать/деактивировать модуль можно так:

sudo phpenmod mbstring
sudo phpdismod mbstring

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли mbstring:

php -i | grep -i mbstring

Изменение connect_timeout в MySQL

connect_timeout — количество секунд, в течение которых сервер mysql ожидает пакет подключения, прежде чем прервать соединение.

Подключится к MySQL и посмотрим текущее значение:

mysql -u USER -p
show variables like "connect_timeout";
quit;

Значение connect_timeout можно указать в файле /etc/mysql/my.cnf, например:

[mysqld]
connect_timeout=10

В реальном времени можно изменить выполнив SQL запрос (после перезапуска MySQL оно сбросится на стандартное или указанное в файле конфигурации):

SET GLOBAL connect_timeout=10;

Стандартное значение равно 10, минимальное — 2, максимальное 31536000.

Изменение wait_timeout и interactive_timeout в MySQL

wait_timeout — Количество секунд, в течение которых сервер ждет активности в неинтерактивном соединении, прежде чем закрыть его.
В момент соединения значение wait_timeout берется из глобального значения wait_timeout или interactive_timeout в зависимости от типа клиента (как определено опцией CLIENT_INTERACTIVE connect для mysql_real_connect ())

Подключится к MySQL и посмотрим текущее значение:

mysql -u USER -p
show variables like "wait_timeout";
show variables like "interactive_timeout";
quit;

По умолчанию значения wait_timeout и interactive_timeout равняются 28800 секунд = 8 часов.
Минимально можно установить 1, максимум — 31536000, максимум (для Windows) — 2147483.

Можно изменить значение wait_timeout выполнив SQL запрос, например:

set global wait_timeout = 28800;
set global interactive_timeout = 28800;

Чтобы установленное значение не сбросилось, его нужно указать в файле /etc/mysql/my.cnf, в блоке mysqld:

[mysqld]
wait_timeout = 28800
interactive_timeout = 28800

Контроль доступа Apache2

Контроль доступа Apache2 версии 2.4 немного отличается от 2.2, например чтобы разрешить доступ всем, в версии 2.4 нужно указывать:

Require all granted

Разрешить доступ указанным IP-адресам:

Require local
Require ip 192.168.56.1 192.168.22.10

Разрешить всем кроме указанного IP:

Require all granted
Require not ip 192.168.56.1

Разрешить указанному хосту:

Require host example.com

Запретить всем:

Require all denied

А в версии Apache2 2.2, разрешить доступ всем так:

Order allow,deny
Allow from all

Запретить всем:

Order deny,allow
Deny from all

Разрешить доступ указанным IP:

Order allow,deny
Allow from 192.168.56.1 192.168.22.10

Разрешить указанному хосту:

Order Deny,Allow
Deny from all
Allow from example.com

После изменений в конфигурации Apache2 необходима перезагрузка (если изменения были в файле .htaccess, то перезагрузка не требуется):

sudo service apache2 restart

Смотрите также:
Использование .htaccess

Установка Zurmo в Linux

На тесте установлю Zurmo в Ubuntu Server 16.04 и PHP 7.

1) Сначала посмотрим требования http://zurmo.org/wiki/installation-requirements
Установим что необходимо:

sudo apt-get install apache2 mysql-server mysql-client wget unzip php php-mysql php-cli php-gd php-common php-curl php-dev php-pear php-imap libapache2-mod-php php-mcrypt php-memcache php-memcached memcached php-soap php-mbstring

Откроем файл конфигурации PHP в текстовом редакторе:

sudo nano /etc/php/7.0/apache2/php.ini

И укажем некоторые параметры:

date.timezone = Europe/Kiev
post_max_size = 32M
upload_max_filesize = 32M
zend.assertions = 0

Перезапустим apache2 чтобы применить изменения:

sudo service apache2 restart

2) Подключимся к mysql, создадим пустую базу данных и пользователя:

mysql -u root -p
CREATE DATABASE zurmo;
CREATE USER 'zurmo'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON `zurmo`.* TO 'zurmo'@'localhost';
FLUSH PRIVILEGES;
QUIT;

3) Скачаем последнюю версию с официального сайта http://zurmo.org/download
Можно скопировать ссылку на stable версию и например скачать в linux так:

wget http://build.zurmo.com/downloads/zurmo-stable-3.2.1.57987acc3018.zip

4) Распакуем архив с zurmo, переместим в директорию веб сервера и назначим права:

unzip zurmo-stable-3.2.1.57987acc3018.zip
mv zurmo /var/www/html/zurmo/
sudo chown -R www-data:www-data /var/www/html/zurmo/

5) Теперь можно открыть в браузере ссылку http://HOST/zurmo/app/index.php, приступить к установке и следовать отображающимся инструкциям.
При установке укажем пароль пользователя super и заполним его, он понадобится в дальнейшем для входа.

6) В процессе установки Zurmo требовалось отключить строгий режим MySQL, для этого я открыл файл конфигурации:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Добавил в самом конце параметр (так как его не было):

sql_mode=""

Перезагрузил MySQL:

sudo service mysql restart

Все.

Как удалить iRedMail

Приведу пример удаления iRedMail.
На тесте удалю установленный iRedMail 0.9.7 с Ubuntu Server 16.04 используя скрипт удаления — clear_iredmail.

Перейдем в директорию tools установщика iRedMail, сохраним в нее скрипт, в моем случае это:

cd /root/iRedMail-0.9.7/tools/
wget https://ixnfo.com/wp-content/uploads/2017/08/clear_iredmail.zip
unzip clear_iredmail.zip

Сделаем его исполняемым:

chmod +x clear_iredmail.sh

И запустим:

bash clear_iredmail.sh

Скрипт удалит mysql, ssl, amavisd, clamav, spamassassin, dovecot, postfix, iredapd, пользователей и т.д., нужно быть осторожным если на сервере установлено еще что-то кроме iRedMail.
В коде скрипта можно увидеть поэтапно расписанный процесс удаления iRedMail.

Решение ошибки host NAME greeted me with my own hostname NAME

Заметил однажды на одном сервере, что Postfix не всегда отправляет письма, в логах была следующая ошибка:

warning: host NAME[192.168.5.5]:25 greeted me with my own hostname NAME

Посмотрев имя хоста:

hostname -f

Обнаружил что оно не правильное и совпадает с тем на которое шлется почта!

Изменил имя хоста на правильное в следующих файлах (в редакторе nano Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/hostname
sudo nano /etc/postfix/main.cf
sudo nano /etc/hosts

Все, после этого ошибка не появлялась и почта успешно доставлялась.