В данной заметке нет ни слова о том, что такое PostfixAdmin, и как включить его в состав почтовой системы. В Сети есть масса хороших статей на эту тему. Данная заметка дополняет имеющиеся статьи и рассматривает такие возможности PostfixAdmin, как: автоответчик, сбор почты, создание групповых алиасов, очистка диска от удаленных через GUI почтовых ящиков. На мой взгляд, эти вопросы слишком кратко рассмотрены в русскоязычных документах, поэтому я решил частично восполнить пробел.
Исходные данные
Имеется сервер с FreeBSD, на котором кроме всего прочего развернута почтовая система среднего офиса на базе Postfix. Для управления почтовой системой используется PostfixAdmin. Для включения описанных выше функций PostfixAdmin нам понадобятся Fetchmail (для сбора почты с удаленных серверов) и sudo (для запуска скрипта с привилегиями нужной учетной записи). Все программное обеспечение будет устанавливаться из портов, поэтому я рекомендую Вам обновить их перед выполнением действий, описанных ниже (я использовал FreeBSD 7.0 и последние версии портов для нее). Все имена папок соответствуют стандартным значениям, выбираемым по умолчанию при установке программного обеспечения из портов.
Спонсор поста
Небольшой, но очень уютный и быстрый renault clio лучше всего подойдет для езды по городу. Сделайте подарок жене :)
Автоответчик
Автоответчик предназначен для того, чтобы сотрудник, собирающийся, например, в отпуск, мог задать сообщение, которое будет отправляться в ответ на поступающие в его адрес сообщения, чтобы корреспонденты узнали, когда он вернется, к кому можно обратиться во время его отсутствия и т.п. Ниже показан скриншот окна, в котором можно задать сообщение автоответчика (по понятным причинам почтовые адреса и URL’ы скрыты):
При выполнении действий, описанных в данном разделе, я руководствовался документом INSTALL.TXT, находящемся в /usr/local/www/postfixadmin/VIRTUAL_VACATION.
Для настройки автоответчика в первую очередь необходимо создать пользователя vacation и группу vacation, от имени которых будет работать скрипт vacation.pl, создать домашнюю папку пользователя vacation, поместить в нее скрипт vacation.pl, а также соответствующим образом изменить владельца папки и права скрипта:
1.pw group add vacation -g 65501
2.pw user add vacation -g vacation -s /sbin/nologin -u 65501
3.mkdir /var/spool/vacation
4.cd /var/spool/vacation
5.cp /usr/local/www/postfixadmin/VIRTUAL_VACATION/vacation.pl .
6.chown -R vacation:vacation .
7.chmod 500 vacation.pl
Затем необходимо подправить скопированный ранее скрипт vacation.pl. В частности, следует изменить строки, определяющие тип используемой базы данных, имя пользователя / пароль / имя базы данных:
1.my $db_type = 'mysql';
2.my $db_username = 'postfix';
3.my $db_password = 'postfix';
4.my $db_name = 'postfix';
После этого необходимо добавить определение транспорта vacation в файл master.cf, находящийся в /usr/local/etc/postfix:
1.vacation unix - n n - - pipe flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl
2. -f ${sender} -- ${recipient}
Если по соображениям безопасности Ваша файловая система /var имеет атрибут noexec (моя имеет), добавьте в командную строку путь к интерпретатору Perl, иначе скрипт vacation.pl не сможет запускаться:
1.vacation unix - n n - - pipe flags=Rq user=vacation argv=/usr/bin/perl -w /var/spool/vacation/vacation.pl
2. -f ${sender} -- ${recipient}
Далее следует добавить строку, определяющую транспорт vacation, в файл transport, находящийся в /usr/local/etc/postfix и являющийся таблицей транспортов. Формат данного файла описан в transport(5). Добавляемая строка имеет вид:
1.autoreply.company.com vacation:
После изменения файла transport необходимо выполнить команду postmap, указав в качестве аргумента имя файла transport. Домен autoreply.company.com является абстрактным, т.е. не нуждается в регистрации соответствующих записей в DNS, достаточно добавить запись об этом домене в файл /etc/hosts:
1.127.0.0.1 autoreply.company.com
Далее необходимо откорректировать значение параметра transport_maps в файле main.cf, находящемся в /usr/local/etc/postfix, добавив созданную (измененную) ранее таблицу транспортов:
1.transport_maps = mysql:/usr/local/etc/postfix/mysql/transport_maps.conf,
2. hash:/usr/local/etc/postfix/transport
Остается подправить файл config.inc.php, находящийся в /usr/local/www/postfixadmin, для включения функций управления автоответчиком в интерфейсе PostfixAdmin. В частности, следует изменить строки, определяющие включение автоответчика; домен, используемый автоответчиком; возможность пользователей задавать сообщения автоответчика; возможность администратора изменять эти сообщения:
1.$CONF['vacation'] = 'YES';
2.$CONF['vacation_domain'] = 'autoreply.company.com';
3.$CONF['vacation_control'] = 'YES';
4.$CONF['vacation_control_admin'] = 'YES';
Теперь можно перезапустить Postfx командой postfix reload и начать пользоваться автоответчиком. При возникновении каких-либо проблем c работой скрипта vacation.pl анализируйте сообщения, которые пишутся в /var/log/messages. В моем случае возникла всего одна несостыковка – отсутствие необходимых модулей Perl, которые были благополучно доустановлены из портов.
Полезное
Ищите работу на лучшем российском трудовом портале job.ru: вакансии киров.
Сбор почты
Сбор почты – функция, позволяющая организовать доставку почты из почтовых ящиков, находящихся на удаленных почтовых серверах, в заданные локальные почтовые ящики. Ниже показан скриншот окна, в котором можно задать соответствие между почтовым ящиком на удаленном сервере и одним из локальных почтовых ящиков (по понятным причинам часть почтовых адресов и URL’ов скрыта):
Система сбора почты использует утилиты Fetchmail и sudo. Естественно, их нужно установить из портов, если они не были установлены ранее:
1.cd /usr/ports/mail/fetchmail
2.make install clean
3.cd ../../security/sudo
4.make install clean
Дополнительная настройка Fetchmail и sudo для работы совместно с PostfixAdmin не требуется. После завершения установки необходимо перейти в /usr/local/www/postfixadmin/ADDITIONS и соответствующим образом изменить права скрипта fetchmail.pl:
1.cd /usr/local/www/postfixadmin/ADDITIONS
2.chmod +x fetchmail.pl
Затем необходимо подправить скрипт fetchmail.pl. В частности, следует изменить строки, определяющие имя базы данных / имя пользователя / пароль и полное имя исполняемого файла Fetchmail:
1.$database="postfix";
2.$user="postfixadmin";
3.$password="postfixadmin";
4.$ret=`/usr/local/bin/fetchmail`;
Не торопитесь запускать скрипт fetchmail.pl, т.к. он сможет работать корректно только при запуске от имени владельца папки /var/spool/vmail (пользователя vmail). На форуме PostfixAdmin рекомендуется осуществлять такой запуск с помошью sudo. Для того, чтобы автоматизировать процесс сбора почты, необходимо добавить команду запуска скрипта fetchmail.pl в /etc/crontab. В моем случае опрос удаленных серверов осуществляется каждые 10 минут, и запись в файле /etc/crontab имеет следующий вид:
1.*/10 * * * * root /usr/local/bin/sudo -H -u vmail /usr/local/www/postfixadmin/ADDITIONS/fetchmail.pl
Остается подправить файл config.inc.php, находящийся в /usr/local/www/postfixadmin, для включения функций управления сбором почты в интерфейсе PostfixAdmin. В частности, следует изменить строку, определяющую включение сбора почты:
1.$CONF['fetchmail'] = 'YES';
На этом настройка сбора почты заканчивается.
Алиас everyone
В некоторых случаях требуется отправить сообщение всем пользователям почтового домена (разослать какое-то распоряжение руководства, предупреждение и т.п.) Естественно, для этого используется специальный алиас (в моем случае – everyone@company.com), которой нуждается в постоянной корректировке. PostfixAdmin позволяет автоматизировать поддержание этого алиаса в актуальном состоянии.
Для включения поддержки актуального состояния алиаса everyone@company.com в первую очередь необходимо перейти в /usr/local/www/postfixadmin/ADDITIONS и соответствующим образом изменить права скрипта mkeveryone.pl:
1.cd /usr/local/www/postfixadmin/ADDITIONS
2.chmod +x mkeveryone.pl
Затем необходимо подправить скрипт mkeveryone.pl. В частности, следует изменить строки, определяющие имя пользователя / пароль, имя домена, и список адресов, которые не следует включать в состав алиаса (скорее всего, это адреса общих папок и служебных пользователей, таких как, например, postmaster и webmaster):
1.my $userid="postfix";
2.my $passwd="postfix";
3.my $domain="company.com";
4.my @ignore=(
5."info@company.com",
6....
7."webmaster@company.com"
8.);
Следует отметить, что скрипт mkeveryone.pl позволяет задать свою конфигурацию в отдельном файле. Мне не потребовалась такая функциональность, а Вам она может пригодиться.
Для того, чтобы скрипт mkeveryone.pl запускался автоматически, необходимо добавить соответствующую строку в /etc/crontab. В моем случае скрипт запускается один раз в сутки в 0:15, и запись в /etc/crontab имеет следующий вид:
1.15 0 * * * root /usr/local/www/postfixadmin/ADDITIONS/mkeveryone.pl
На этом настройка завершается. Если Вы хотя бы немного знаете Perl и SQL, скрипт mkeveryone.pl может служить Вам отличной заготовкой для реализации автоматического создания любых алиасов.
Очистка диска
Как известно, GUI PostfixAdmin осуществляет изменение содержимого базы данных, но не изменяет содержимое жесткого диска. Т.о., при удалении ящика через GUI необходимо вручную удалить соответствующий maildir с жесткого диска. PostfixAdmin позволяет организовать автоматическое удаление ящиков с жесткого, диска, если информация о них была предварительно удалена из базы данных через GUI.
Для включения поддержки автоматической очистки диска от удаленных почтовых ящиков в первую очередь необходимо перейти в /usr/local/www/postfixadmin/ADDITIONS и изменить права скрипта cleanupdirs.pl:
1.cd /usr/local/www/postfixadmin/ADDITIONS
2.chmod +x cleanupdirs.pl
Затем необходимо подправить скрипт cleanupdirs.pl. В частности, следует изменить строки, определяющие папку, содержащую почтовые ящики и имя пользователя / пароль для доступа к базе данных:
1.my $root_path = "/var/spool/vmail";
2.my $db_username = "postfix";
3.my $db_password = "postfix";
Для того, чтобы чтобы скрипт cleanupdirs.pl запускался автоматически, необходимо добавить соответствующую строку в /etc/crontab. В моем случае диск очищается один раз в сутки в 0:30, и запись в файле /etc/crontab имеет следующий вид:
1.30 0 * * * root /usr/local/www/postfixadmin/ADDITIONS/cleanupdirs.pl --delete
На этом настройка завершается. Список удаленных maildir’ов помещается в /var/log/rcodeoved_maildirs.log.
Заключение
Выполнив несложную последовательность действий, описанных в статье, Вы сможете повысить функциональность своей почтовой системы и сэкономить время, затрачиваемое на ее поддержку. Актуальность описанных доработок растет по мере увеличения количества абонентов поддерживаемой Вами почтовой системы.
Источник – SergeySL homepage
One Comment