Web интерфейс для транспорта Postfix

В общем, надоело мне добавлять в транспорт пользователей руками, а лень, как известно это двигатель прогресса, поэтому, я решил написать небольшой 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

Запись опубликована в рубрике Postfix. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91