Архив за месяц: Февраль 2014

Vesta faq пути

Шаблоны страниц по умолчанию vesta

1
/usr/local/vesta/data/templates/web/skel/public_html/index.html
/usr/local/vesta/data/templates/web/skel/public_html/index.html

SSL сертификаты панели

1
2
/usr/local/vesta/ssl/certificate.crt
/usr/local/vesta/ssl/certificate.key
/usr/local/vesta/ssl/certificate.crt
/usr/local/vesta/ssl/certificate.key

Exim статистика

1
eximstats /var/log/exim/main.log 
eximstats /var/log/exim/main.log 

Vesta пакеты

1
/usr/local/vesta/data/packages
/usr/local/vesta/data/packages

Vesta php 5.3

Для того чтобы установить php 5.3, нужно для начала удалить существующий

1
2
3
4
5
6
7
8
9
10
service httpd stop
yum -y remove php*
yum -y install php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-soap php-tidy php-xml php-xmlrpc php-pecl-apc phpMyAdmin roundcubemail
mv -f /etc/php.ini.rpmsave /etc/php.ini
mv -f /etc/roundcubemail/db.inc.php.rpmsave /etc/roundcubemail/db.inc.php
mv -f /etc/roundcubemail/main.inc.php.rpmsave /etc/roundcubemail/main.inc.php
mv -f /etc/phpMyAdmin/config.inc.php.rpmsave /etc/phpMyAdmin/config.inc.php
mv -f /etc/httpd/conf.d/roundcubemail.conf.rpmsave /etc/httpd/conf.d/roundcubemail.conf
mv -f /etc/httpd/conf.d/phpMyAdmin.conf.rpmsave /etc/httpd/conf.d/phpMyAdmin.conf
service httpd start
service httpd stop
yum -y remove php*
yum -y install php php-bcmath php-cli php-common php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-soap php-tidy php-xml php-xmlrpc php-pecl-apc phpMyAdmin roundcubemail
mv -f /etc/php.ini.rpmsave /etc/php.ini
mv -f /etc/roundcubemail/db.inc.php.rpmsave /etc/roundcubemail/db.inc.php
mv -f /etc/roundcubemail/main.inc.php.rpmsave /etc/roundcubemail/main.inc.php
mv -f /etc/phpMyAdmin/config.inc.php.rpmsave /etc/phpMyAdmin/config.inc.php
mv -f /etc/httpd/conf.d/roundcubemail.conf.rpmsave /etc/httpd/conf.d/roundcubemail.conf
mv -f /etc/httpd/conf.d/phpMyAdmin.conf.rpmsave /etc/httpd/conf.d/phpMyAdmin.conf
service httpd start

Избавляем exim от спама

1
vi /etc/exim/exim.conf
vi /etc/exim/exim.conf
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
acl_check_data:
 
# Аутентифицированым везде у нас дорога
# Аутентифицированым везде у нас почет
#
# Приемлимо, если есть уверенность в отсутствии вирусни у юзеров, дабы не рассылали.
# Я юзаю на виндовых клиентах Thunderbird и никакого Бата или Некрофост Аутглюков (Экспресс)
#
accept authenticated = *
 
# Проверяем наличие RFC даты
# Немного спам-ботов балуют правильно оформленной датой. Режем.
#
defer
message = RFC compliant date required.
condition = ${if !match\
{$h_date:}\
{\N[0-9]\N}\
{yes}{no}}
 
# Проверяем наличие RFC To
# Немного спам-ботов балуют правильно оформленным полем To. Режем.
#
defer
message = RFC compliant to required.
condition = ${if !match\
{$h_to:}\
{\N.+\N}\
{yes}{no}}
 
# Проверяем наличие не ASCII символов, за исключением UTF-8
# Немного спам-ботов балуют правильно оформленной кодировкой. Режем.
#
# Тут надо с некоторой оглядкой - некоторые форумы и прочие самоделки рассылают как попало, без соблюдения кодировки.
#
defer
message = Message headers contain non ASCII chars.
condition = ${if !match\
{${lc:$h_content-type:}}\
{\Nutf-?8\N}\
{yes}{no}}
condition = \
${if \
or {\
{match{$rh_bcc:}{\N[\x80-\xff]\N}}\
{match{$rh_cc:}{\N[\x80-\xff]\N}}\
{match{$rh_date:}{\N[\x80-\xff]\N}}\
{match{$rh_from:}{\N[\x80-\xff]\N}}\
{match{$rh_reply-to:}{\N[\x80-\xff]\N}}\
{match{$rh_sender:}{\N[\x80-\xff]\N}}\
{match{$rh_subject:}{\N[\x80-\xff]\N}}\
{match{$rh_to:}{\N[\x80-\xff]\N}}\
}\
{yes}{no}}
 
# Домен не может быть localhost или localdomain
# На "дурака" не проканает. Режем.
#
defer
message = ${domain:$h_from:} is a wrong domain.
hosts = ! : !+relay_from_hosts
condition = ${if match\
{${domain:$h_from:}}\
{\N^(localhost|localhost\.local(domain)?|local(domain)?)$\N}\
{yes}{no}}
 
# Не принимаем почту с "голых" IP-адресов (RFC 1918)
# С "голых" IP посылаем нахуй. Это 100% спам!
#
deny hosts = !+relay_from_hosts
message = RFC 1918 IP address in HELO.
condition = ${if match\
{$sender_helo_name}\
{\N^(\[)?(10\.[0-9]{1,3}|172\.(1[6-9]|2[0-9]|31)|192\.168)\.[0-9]{1,3}\.[0-9]{1,3}(\])?$\N}\
{yes}{no}}
 
# Удаленный хост должен резольвиться
# Не резольвишься? Иннах, спам-бот!
#
deny hosts = !+relay_from_hosts
message = HELO should be hostname.
condition = ${if !match\
{$sender_helo_name}\
{\N.*[A-Za-z].*\N}\
{yes}{no}}
 
# Удаленный хост должен иметь FQDN
# Резольвишься как попало? Иннах, спам-бот!
#
deny hosts = !+relay_from_hosts
message = HELO should be Fully Qualified Domain Name Host.Domain.Tld See RFC821
condition = ${if !match\
{$sender_helo_name}\
{\N.*[A-Za-z].*\..*[A-Za-z].*\N}\
{yes}{no}}
 
# Поврежденные аттачи - фтопку!
# Кривой MIME нам не нужен! Иннах, спам-бот!
#
deny
message = This message contains malformed MIME $demime_reason.
condition = ${if >\
{$demime_errorlevel}{2}\
{1}{0}}
 
# Виндово-исполняемое говно - фтопку!
# Иннах, инфицированя тачка и/или тупой юзер!
#
deny
message = Attachment has unsupported file format .$found_extension. try text, PDF or ODF instead.
demime = bat:btm:cmd:com:cpl:dat:dll:exe:lnk:msi:pif:prf:reg:scr:vb:vbs:url
 
# Проверяем на вирусы
# У меня подкдючен avast.
# Не забываем включить опцию demime в src/EDITME при сборке exim
#
deny
message = Message contains a virus or other harmful content ($malware_name)
demime = *
malware = *
acl_check_data:

# Аутентифицированым везде у нас дорога
# Аутентифицированым везде у нас почет
#
# Приемлимо, если есть уверенность в отсутствии вирусни у юзеров, дабы не рассылали.
# Я юзаю на виндовых клиентах Thunderbird и никакого Бата или Некрофост Аутглюков (Экспресс)
#
accept authenticated = *

# Проверяем наличие RFC даты
# Немного спам-ботов балуют правильно оформленной датой. Режем.
#
defer
message = RFC compliant date required.
condition = ${if !match\
{$h_date:}\
{\N[0-9]\N}\
{yes}{no}}

# Проверяем наличие RFC To
# Немного спам-ботов балуют правильно оформленным полем To. Режем.
#
defer
message = RFC compliant to required.
condition = ${if !match\
{$h_to:}\
{\N.+\N}\
{yes}{no}}

# Проверяем наличие не ASCII символов, за исключением UTF-8
# Немного спам-ботов балуют правильно оформленной кодировкой. Режем.
#
# Тут надо с некоторой оглядкой - некоторые форумы и прочие самоделки рассылают как попало, без соблюдения кодировки.
#
defer
message = Message headers contain non ASCII chars.
condition = ${if !match\
{${lc:$h_content-type:}}\
{\Nutf-?8\N}\
{yes}{no}}
condition = \
${if \
or {\
{match{$rh_bcc:}{\N[\x80-\xff]\N}}\
{match{$rh_cc:}{\N[\x80-\xff]\N}}\
{match{$rh_date:}{\N[\x80-\xff]\N}}\
{match{$rh_from:}{\N[\x80-\xff]\N}}\
{match{$rh_reply-to:}{\N[\x80-\xff]\N}}\
{match{$rh_sender:}{\N[\x80-\xff]\N}}\
{match{$rh_subject:}{\N[\x80-\xff]\N}}\
{match{$rh_to:}{\N[\x80-\xff]\N}}\
}\
{yes}{no}}

# Домен не может быть localhost или localdomain
# На "дурака" не проканает. Режем.
#
defer
message = ${domain:$h_from:} is a wrong domain.
hosts = ! : !+relay_from_hosts
condition = ${if match\
{${domain:$h_from:}}\
{\N^(localhost|localhost\.local(domain)?|local(domain)?)$\N}\
{yes}{no}}

# Не принимаем почту с "голых" IP-адресов (RFC 1918)
# С "голых" IP посылаем нахуй. Это 100% спам!
#
deny hosts = !+relay_from_hosts
message = RFC 1918 IP address in HELO.
condition = ${if match\
{$sender_helo_name}\
{\N^(\[)?(10\.[0-9]{1,3}|172\.(1[6-9]|2[0-9]|31)|192\.168)\.[0-9]{1,3}\.[0-9]{1,3}(\])?$\N}\
{yes}{no}}

# Удаленный хост должен резольвиться
# Не резольвишься? Иннах, спам-бот!
#
deny hosts = !+relay_from_hosts
message = HELO should be hostname.
condition = ${if !match\
{$sender_helo_name}\
{\N.*[A-Za-z].*\N}\
{yes}{no}}

# Удаленный хост должен иметь FQDN
# Резольвишься как попало? Иннах, спам-бот!
#
deny hosts = !+relay_from_hosts
message = HELO should be Fully Qualified Domain Name Host.Domain.Tld See RFC821
condition = ${if !match\
{$sender_helo_name}\
{\N.*[A-Za-z].*\..*[A-Za-z].*\N}\
{yes}{no}}

# Поврежденные аттачи - фтопку!
# Кривой MIME нам не нужен! Иннах, спам-бот!
#
deny
message = This message contains malformed MIME $demime_reason.
condition = ${if >\
{$demime_errorlevel}{2}\
{1}{0}}

# Виндово-исполняемое говно - фтопку!
# Иннах, инфицированя тачка и/или тупой юзер!
#
deny
message = Attachment has unsupported file format .$found_extension. try text, PDF or ODF instead.
demime = bat:btm:cmd:com:cpl:dat:dll:exe:lnk:msi:pif:prf:reg:scr:vb:vbs:url

# Проверяем на вирусы
# У меня подкдючен avast.
# Не забываем включить опцию demime в src/EDITME при сборке exim
#
deny
message = Message contains a virus or other harmful content ($malware_name)
demime = *
malware = *

 

Авторство

Имя отправителя. Функция mail() PHP Vesta

1. Редактируем

1
 vi /home/user/conf/web/httpd.conf
 vi /home/user/conf/web/httpd.conf

,

где user — это име пользователя в Весте

2. Для нужного нам VirtualHost (см. ServerName) добавляем:

1
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@domain.ru
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@domain.ru

теперь мы в Return-Path и прочих заголовках имеем webmaster@domain.ru

swap файл в Centos

По умолчанию в CenOS на digitalocean’e нет своп раздела. Что при нехватке оперативной памяти негативно сказывается на работе OS.

Проверяем наличие свопа

1
swapon -s
swapon -s

Создаем файл размером 1024Мб.

1
2
3
dd if=/dev/zero of=/swapfile bs=1M count=1000
mkswap /swapfile
swapon /swapfile
dd if=/dev/zero of=/swapfile bs=1M count=1000
mkswap /swapfile
swapon /swapfile

Проверяем:

1
swapon -s
swapon -s
1
2
Filename                                Type            Size    Used    Priority
/swapfile                               file            1023992 0       -1
Filename                                Type            Size    Used    Priority
/swapfile                               file            1023992 0       -1

Подключаем своп файл при загрузке:

1
vi /etc/fstab
vi /etc/fstab

добавляем строчку

1
/swapfile          swap            swap    defaults        0 0
/swapfile          swap            swap    defaults        0 0

Права на файл

1
2
chown root:root /swapfile 
chmod 0600 /swapfile
chown root:root /swapfile 
chmod 0600 /swapfile

ionCube centos 6 x64

Берём подходящий лоадер здесь: http://www.ioncube.com/loaders.php

1
2
3
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar zxf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube /usr/local
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar zxf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube /usr/local

теперь в конфиг php (в моём случае /etc/php.ini) вставим с блок [Zend] строки:

1
2
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.4.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.4_ts.so
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.4.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.4_ts.so

для php 5.4, обратите снимание на последние цифры so-шки, они должны соответствовать версии php.

Проверяем:

1
php -v
php -v
1
2
3
4
PHP 5.4.23 (cli) (built: Dec 11 2013 06:48:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with the ionCube PHP Loader v4.5.2, Copyright (c) 2002-2014, by ionCube Ltd.
PHP 5.4.23 (cli) (built: Dec 11 2013 06:48:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with the ionCube PHP Loader v4.5.2, Copyright (c) 2002-2014, by ionCube Ltd.