Продолжая тему о многофункциональном почтовом сервере exim и удобной админкой vexim хочется рассказать, о том, как немного улучшить работу с этой замечательной админкой: возможность просматривать пароли прямо из самого vexim’a, включить по умолчанию проверку на вирусы и спам.
1) Добавляем возможность просматривать пароли.
По умолчанию, он не отображает пароли, но в базе данных есть столбец с паролями, помимо столбца с его хешами. Вот собственно его и будем использовать. Столбец называется clear.
a) Редактируем файл adminuserchange.php
Открываем файл adminuserchange.php (он находится в корне vexim’a) и ищем такие строки
<tr>
<td><?php echo _('Email Address'); ?>:</td>
<td><?php print $row['username']; ?></td>
</tr>
Сразу после них добавляем такие
<tr>
<td><?php echo _('Current Password'); ?>:</td>
<td><?php print htmlspecialchars($row['clear']); ?></td>
</tr>
Сохраняем.
b) Редактируем файл adminuser.php
Открываем файл adminuser.php (он находится в корне vexim’a) и ищем такие строки:
<th><?php echo _('User'); ?></th>
<th><?php echo _('Email address'); ?></th>
После них вставляем такую:
<th><?php echo _('Password'); ?></th>
В итоге получается так:
<th><?php echo _('User'); ?></th>
<th><?php echo _('Email address'); ?></th>
<th><?php echo _('Password'); ?></th>
Теперь ищем строку
$query = "SELECT user_id, localpart, realname, admin, enabled
и добавляем в конец слово clear:
$query = "SELECT user_id, localpart, realname, admin, enabled, clear
Ну и в последнее – ищем строки
. '</a></td>';
print '<td>' . $row['localpart'] .'@'. $_SESSION['domain'] . '</td>';
и после них вставляем такую:
print '<td>' . htmlspecialchars($row['clear']) . '</td>';
Должно получиться так:
. '</a></td>';
print '<td>' . $row['localpart'] .'@'. $_SESSION['domain'] . '</td>';
print '<td>' . htmlspecialchars($row['clear']) . '</td>';
Сохраняем и наслаждаемся просмотром паролей. Теперь не зачем каждый раз лезть в базу данных и запросами извлекать пароли – пускай система это всё делает за нас.
2) Включаем по умолчанию проверку на вирусы и спам.
При создании пользователя через vexim нам предлагают на выбор достаточно много параметров, в том числе и проверку на вирусы и спам. Но по умолчанию эти галочки не стоят. Каждый раз ставить – это не подход сисадмина. Наш подход – как можно больше автоматизировать процесс. Ну что ж приступим. Открываем файл adminuseradd.php и ищем такие строки:
<td><input name="on_avscan" type="checkbox" /></td>
<td><input name="on_spamassassin" type="checkbox" /></td>
Теперь после конструкции type=”checkbox” в обеих строках добавляем ключевое слово checked, получаем такое:
<td><input checked="checked" name="on_avscan" type="checkbox" /></td>
<td><input checked="checked" name="on_spamassassin" type="checkbox" /></td>
Сохраняем и выходим.
3) Устанавливаем размер писем по умолчанию.
При создании пользователя удобно, что бы по умолчанию ставились ограничения на размер письма (иначе пользователи начнут фильмами обмениваться). Открываем файл adminuseradd.php в корне сайта и меняем строку
<input name="maxmsgsize" size="5" type="text" value="<?php echo $row['maxmsgsize']; ?>">Kb
на такую
<input name="maxmsgsize" size="5" type="text" value="10000">Kb
Этим мы поставили ограничения в 10МБ (на самом деле чуть меньше) на размер письма.
4) Исправляем неточности.
Заметил один момент: при создании пользователя и потом последующем редактировании галочка напротив Spamassassin уже не стоит, хотя при создании стояла и в БД в соответствующем поле стоит 1. На первый взгляд, код ничем не отличается от того, который выше (то есть для проверки на вирусы). НО! Это только на первый взгляд. Присмотрелся и понял. Сравните и вы
<?php if ($row['on_spamassassin'] == "1") {
и
<? if ($row['on_spamassassin'] == "1") {
Видите отсутствие php в первой открывающей угловой скобки. Если в вашем веб-сервере параметр short_open_tags установлен в ON, то у вас будет всё работать и ничего вы не заметите. Но у меня он установлен в OFF.