Показаны сообщения с ярлыком mysql. Показать все сообщения
Показаны сообщения с ярлыком mysql. Показать все сообщения

четверг, 19 ноября 2009 г.

mysql: Как переместить все базы mysql во FreeBSD?

Предположим что у вас FreeBSD, где установлен mysql. По умолчанию все базы mysql расположены в папке /var/db/mysql. (Узнать где расположены базы можно с помощью команды mysqladmin variables grep datadir). И предположим также, что вы сразу не выделили много места под папку /var, и в один прекрасный день у вас стало не хватать места под работу mysql и стали появляться ошибки вида:

"kernel: pid 2941 (mysqld), uid 88 inumber 71662 on /var: filesystem full".

Одно из решений этого вопроса состоит в переносе всех баз на другой диск. Сделать это можно следующим образом.

Допустим вы смонтировали новый диск в папку /var/db2/.

Прежде всего скопируем все базы в новую папку

1) cp -a (или -pfR) /var/db/mysql /var/db2

Далее изменим настройки mysql, добавив следующую запись в /etc/rc.conf:

2) mysql_dbdir="/var/db2/mysql"

3) Перезагружаем mysqld или лучше весь сервер.

4) Проверяем что все работает и удаляем папку /var/db/mysql: rm -Rf /var/db/mysql.

Далее работает уже без ошибок :)

вторник, 17 ноября 2009 г.

Postfix: как запретить локальным пользователя отправлять почту во вне

Из серии маленькие хитрости :)

Имеем следующие исходные данные. Есть почтовый сервер построенный на FreeBSD. На нем установлен postfix и база данных пользователей расположена в mysql. В postfix включена SASL аутентификация.
Нужно определенным пользователям запретить отправлять почту во вне, т.е. отправлять им почту можно будет только внутренним пользователям: от mydomain.ru к mydomain.ru.

Делается это следующим образом.

1) Редактируем файл main.cf и добавляем следующие строки:
smtpd_restriction_classes = local_recipients_only
local_recipients_only = check_recipient_access mysql:$base/local_recipient.conf, reject

2) Добавлем строку в политику smtpd_recipient_restrictions в таком порядке (порядок важен):
smtpd_recipient_restrictions =
//... Тут могут быть какие-то ваши политики
permit_mynetworks,
check_sender_access hash:$base/local_sender_access,
permit_sasl_authenticated
//... Тут могут быть какие-то ваши политики

3) Создаем файл local_sender_access, где прописываем пользователей для которых нужно закрыть доступ во вне

test@mydomain.ru local_recipients_only
user@mydomain.ru local_recipients_only

затем делаем из него hash файл.

4) Создаем файл local_recipient.conf, который нужен для определения локальных пользователей
user = postfix
password = mypassword
hosts = localhost
dbname = postfix
table = mailbox
select_field = 'permit_sasl_authenticated'
where_field = username
additional_conditions = and active = '1'

5) Перезагружаем postfix

Важно! При такой настройке любой внешний пользователь сможет отправить письмо вашим ограниченым в правах пользователям, а они нет.

Постоянные читатели