В общем, надоело мне добавлять в транспорт пользователей руками, а лень, как известно это двигатель прогресса, поэтому, я решил написать небольшой Web UI. Выглядит он очень простенько, позволяет добавлять или удалять записи и выводит те, который уже есть в базе. Естественно, таблица транспорта должна быть в MySQL.
Если вам нужен интерфейс для управления Postfix-ом, обратите свое внимание на PostfixAdmin
И так, создаем базу в mysql с именем postfix и таблицу transport, для этого зайдя в консоль mysql:
CREATE DATABASE postfix; USE postfix; CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) ) TYPE=MyISAM;
Теперь у нас есть база и таблица транспорта, необходимо об этом сообщить постфиксу, для этого создадим файл в /etc/postfix/ с именем mysql-virtual_transports.cf:
cat << END >> /etc/postfix/mysql-virtual_transports.cf1 user = user password = password hosts = localhost dbname = postfix query = SELECT transport FROM transport WHERE domain='%s' END
Где user — пользователь базы, password — пароль этого пользователя, hosts — имя или IP адрес где находиться база, dbname — имя базы.
В файле main.cf добавляем:
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
Если вы хотите использовать совместно Mysql базу и хешированый фаил, то запись будет такая:
transport_maps = hash:/etc/postfix/transport, proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
Далее, качаем Postfix Transport UI
Все что необходимо сделать, это скачать, разархивировать и сделать эти три php скрипт доступными через web. Ничего сложного там нет, поэтому я не буду вдаваться в подробности. Настройки для MySQL находятся в файле config.php.
Вполне возможно, что у вас уже существует достаточно большой файл transport и вы хотели бы перенести его содержимое в mysql таблицу. Можно воспользоваться двумя моими скриптами. Первый clean.sh очищает файл transport от мусора и разбивает каждую строку на две составляющие, после чего передает эти данные php скрипту add.php и тот в свою очередь вносит эти данные в MySQl базу.
Clean.sh
!/bin/bash # #Parsing and clinsing file. Cleansing fron comments "#", parsing for "@" #Then spliting for email and transport way. TMP="tmp" do echo $LINE | grep "#" if [ $? -ne 0 ] then echo $LINE | grep "@" if [ $? -eq 0 ] then echo $LINE > $TMP mail=`awk 'split($0,a," "){print a[1]}' $TMP` transport=`awk 'split($0,a," "){print a[2]}' $TMP` php add.php $mail $transport echo $LINE >> full_list.txt fi fi done < $1 rm -f $TMP
И add.php :
Запускается, это все очень просто,
./clean.sh /path/to/transport
Источник : eddnet.org/?p=588