Своя почта для ubuntu.ru Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ideapool:почта [2010/09/14 13:11]
ideapool:почта [2010/09/15 00:24] (текущий)
Строка 8: Строка 8:
   - Поставить **postfix**   - Поставить **postfix**
  
-Самым разумным,​ на мой взгляд,​ является организация ящиков в виде редиректов на основной ящик пользователя из профиля SMF. То есть члены определённой группы SMF автоматически получают адрес login@ubuntu.ru,​ который является редиректом на их основной почтовый адрес из профиля.+Самым разумным,​ на мой взгляд,​ является организация ящиков в виде редиректов на основной ящик пользователя из профиля SMF. То есть члены определённой группы SMF автоматически получают адрес login@ubuntu.ru,​ который является редиректом на их основной почтовый адрес из профиля. ​Плюс можно будет добавить несколько адресов вручную,​ естественно тоже редиректами. 
 + 
 +Проще говоря мы предоставляем пользователям адрес, но не предоставляем почтовый ящик. Ящики и так уже у всех есть, накой плодить сущности?​
  
 Преимущества:​ безопасность сервера (нет ни авторизации,​ ни фильтров спама, ни вообще какого-либо доступа пользователей к SMTP) и идеальная простота для конечного пользователя. Ибо ящики и так уже у всех есть и пытаться стать ещё одним почтовым провайдером просто бесполезно. Преимущества:​ безопасность сервера (нет ни авторизации,​ ни фильтров спама, ни вообще какого-либо доступа пользователей к SMTP) и идеальная простота для конечного пользователя. Ибо ящики и так уже у всех есть и пытаться стать ещё одним почтовым провайдером просто бесполезно.
Строка 143: Строка 145:
  
 <code perl> <code perl>
-Скрипт чуть позже+#!/​usr/​bin/​perl 
 + 
 +use 5.010; 
 +use DBI; 
 + 
 +#############################################################​ 
 + 
 +# Настройки базы данных 
 +$MYSQL_host = '​localhost';​ 
 +$MYSQL_port = '​3306';​ 
 +$MYSQL_user = '​mail';​ 
 +$MYSQL_pass = '​Passw0rd';​ 
 +$MYSQL_db = '​smf';​ 
 + 
 +# Параметры SMF - группа пользователей почты и префикс таблиц 
 +$SMF_GID = '​9';​ 
 +$SMF_prefix = '​smf_';​ 
 + 
 +# Обслуживаемый домен 
 +$domain = "​ubuntu.ru";​ 
 + 
 +# Файл псевдонимов 
 +$postfix_file = "/​etc/​postfix/​mailboxes/​smf-aliases";​ 
 + 
 +#############################################################​ 
 + 
 +$dbh = DBI->​connect("​DBI:​mysql:​$MYSQL_db:​$MYSQL_host:​$MYSQL_port",​$MYSQL_user,​$MYSQL_pass) or die "Hey guys! We've got a big error here...";​ 
 + 
 +# Выполняем запрос 
 +my $sth = $dbh->​prepare("​SELECT memberName, realName, emailAddress 
 + FROM ${SMF_prefix}members 
 + WHERE (ID_GROUP = $SMF_GID OR FIND_IN_SET($SMF_GID,​ additionalGroups))"​);​ 
 +$sth->​execute() or die "Hey guys! We've got a big error here...";​ 
 + 
 +# Открываем файл ​псевдонимов для Postfix 
 +open ALIASES, ">​$postfix_file"​ or die "​Can'​t open $postfix_file\n";​ 
 + 
 +# Анализируем ответ 
 +foreach my $row ($sth->​fetchrow_hashref()) { 
 + my $user = $row->​{realName};​ 
 + # Если имя пользователя содержит неразрешённые символы - пропускаем его 
 + # Разрешены любые буквы, цифры и символы "​.",​ "​-"​ и "​_"​ 
 + next if $user =~ /​[^\w.-_]/;​ 
 + # Пишем псевдоним в файл 
 + say ALIASES "​$user\@$domain\t$row->​{emailAddress}";​ 
 +
 + 
 +# Закрываем файл псевдонимов и создаём хеш для postfix'​а 
 +close ALIASES; 
 +`/​usr/​sbin/​postmap hash:​$postfix_file`;​
 </​code>​ </​code>​
  
-Итого поставленная цель достигнута. Кроме того, можно вручную добавлять алиасы,​ чтобы не создавать лишние аккаунты в SMF. Для этого служит вторая карта - **local-aliases**,​ которая заполняется по необходимости вручную.+Добавляем скрипт в cron и радуемся жизни. ​Итого поставленная цель достигнута. Кроме того, можно вручную добавлять алиасы,​ чтобы не создавать лишние аккаунты в SMF. Для этого служит вторая карта - **local-aliases**,​ которая заполняется по необходимости вручную. 
 + 
 +В качестве дополнения к этому:​ 
 + 
 +  * [[jabber|Свой Jabber сервер]] 
 + 
 + 
 +<note important>​В дальнейшем при необходимости эту схему можно расширить путём добавления реальных почтовых ящиков со всеми причиндалами в виде авторизации,​ IMAP и прочих прелестей. Сделать это просто и не потребуется изменения уже работающей системы,​ предложенной выше, только её надстройка.</​note>  ​