Среда, 15.05.2024, 19:38

Блог Владимира Степанова

Реклама
Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Меню
Категории раздела
Установка [14]
Настройка [23]
Установка ПО [11]
Работаем самостоятельно [2]
Хитрости [1]
Разное [1]
Вход на сайт
Реклама
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Линукс » Настройка

    Виртуальные пользователи и домены, почтовый сервер на основе Postfix, Courier, MySQL и SquirrelMail (Ubuntu 8,04 LTS) (Часть 2)

    7 Настройка Courier


    Укажем Courier, чтобы он проводил аутентификацию используя нашу базу данных MySQL. Редактируем /etc/courier/authdaemonrc и изменяем значение authmodulelist:


    vi /etc/courier/authdaemonrc


    [...]
    authmodulelist="authmysql"
    [...]

    Сделаем резервную копию файла /etc/courier/authmysqlrc и очистим его содержимое:


    cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
    cat /dev/null > /etc/courier/authmysqlrc


    Откроем /etc/courier/authmysqlrc и вставим в него следующие строки:


    vi /etc/courier/authmysqlrc


    MYSQL_SERVER localhost
    MYSQL_USERNAME mail_admin
    MYSQL_PASSWORD mail_admin_password
    MYSQL_PORT 0
    MYSQL_DATABASE mail
    MYSQL_USER_TABLE users
    MYSQL_CRYPT_PWFIELD password
    #MYSQL_CLEAR_PWFIELD password
    MYSQL_UID_FIELD 5000
    MYSQL_GID_FIELD 5000
    MYSQL_LOGIN_FIELD email
    MYSQL_HOME_FIELD "/home/vmail"
    MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
    #MYSQL_NAME_FIELD
    MYSQL_QUOTA_FIELD quota

    Перезапустим Courier:


    /etc/init.d/courier-authdaemon restart
    /etc/init.d/courier-imap restart
    /etc/init.d/courier-imap-ssl restart
    /etc/init.d/courier-pop restart
    /etc/init.d/courier-pop-ssl restart


    Запустим


    telnet localhost pop3


    чтобы убедится, что наш сервер POP3 корректно работает. Мы должны увидеть +OK Hello. (введите quit для возврата в оболочку Linux).


    root@server1:/etc/postfix# telnet localhost pop3
    Trying 127.0.0.1...
    Connected to localhost.localdomain.
    Escape character is '^]'.
    +OK Hello there.
    quit
    +OK Better luck next time.
    Connection closed by foreign host.
    root@server1:/etc/postfix#


    8 Изменяем /etc/aliases


    Откроем и изменим /etc/aliases. Сделаете так, что postmaster указывать на root, а root указывает на ваше имя пользователя или ваш почтовый адрес, у вас должно получится примерно так:


    [...]

    postmaster: root
    root: postmaster@yourdomain.tld
    [...]

    или так (здесь administrator ваше имя пользователя):


    [...]

    postmaster: root

    root: administrator

    [...]


    После изменения /etc/aliases, вы должны запустить команду


    newaliases


    и перезапустить Postfix:


    /etc/init.d/postfix restart


    9 Установка amavisd-new, SpamAssassin и ClamAV


    Для установки amavisd-new, spamassassin и clamav, выполним следующую команду:


    apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax


    Настроим amavisd-new. Конфигурационные файлы находятся в директории /etc/amavis/conf.d . Ознакомитесь с ними. Большинство из настроек в этих файлах отлично выставлены, но все же мы изменим три файла:


    Во первых включим ClamAV и SpamAssassin in /etc/amavis/conf.d/15-content_filter_mode раскомментировав @bypass_virus_checks_maps и @bypass_spam_checks_maps lines:


    vi /etc/amavis/conf.d/15-content_filter_mode


    Файл должен быть похож на этот:


    use strict;


    # You can modify this file to re-enable SPAM checking through spamassassin

    # and to re-enable antivirus checking.


    #

    # Default antivirus checking mode

    # Uncomment the two lines below to enable it back

    #


    @bypass_virus_checks_maps = (

    \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);



    #

    # Default SPAM checking mode

    # Uncomment the two lines below to enable it back

    #


    @bypass_spam_checks_maps = (

    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);


    1; # ensure a defined return


    Вам следует посмотреть настройки спама и действия со спамом в /etc/amavis/conf.d/20-debian_defaults. Вам нет необходимости менять настройки по умолчанию. Этот файл содержит хорошие комментарии и поэтому нет необходимости дополнительно их разъяснять здесь:


    vi /etc/amavis/conf.d/20-debian_defaults


    [...]
    $QUARANTINEDIR = "$MYHOME/virusmails";
    $quarantine_subdir_levels = 1; # enable quarantine dir hashing
    
    $log_recip_templ = undef; # disable by-recipient level-0 log entries
    $DO_SYSLOG = 1; # log via syslogd (preferred)
    $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages
    $syslog_facility = 'mail';
    $syslog_priority = 'debug'; # switch to info to drop debug output, etc
    
    $enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
    $enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1
    
    $inet_socket_port = 10024; # default listening socket
    
    $sa_spam_subject_tag = '***SPAM*** ';
    $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
    $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
    $sa_kill_level_deflt = 6.31; # triggers spam evasive actions
    $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
    
    $sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger
    $sa_local_tests_only = 0; # only tests which do not require internet access?
    
    [...]
    $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine)
    $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA
    $final_spam_destiny = D_BOUNCE;
    $final_bad_header_destiny = D_PASS; # False-positive prone (for spam)
    [...]

    Последним отредактируем /etc/amavis/conf.d/50-user добавив посередке параметр $pax='pax'; :


    vi /etc/amavis/conf.d/50-user


    use strict;


    #

    # Place your configuration directives here. They will override those in

    # earlier files.

    #

    # See /usr/share/doc/amavisd-new/ for documentation and examples of

    # the directives you can use in this file

    #


    $pax='pax';


    #------------ Do not modify anything below this line -------------

    1; # ensure a defined return


    После этого добавим пользователя clamav в группу amavis и презапустим amavisd-new и ClamAV:


    adduser clamav amavis
    /etc/init.d/amavis restart
    /etc/init.d/clamav-daemon restart
    /etc/init.d/clamav-freshclam restart


    Настроим Postfix так чтобы он получал всю входящую почту через amavisd-new:


    postconf -e 'content_filter = amavis:[127.0.0.1]:10024'

    postconf -e 'receive_override_options = no_address_mappings'


    Добавим следующие строки в /etc/postfix/master.cf:





    vi /etc/postfix/master.cf


    [...]

    amavis unix - - - - 2 smtp

    -o smtp_data_done_timeout=1200

    -o smtp_send_xforward_command=yes


    127.0.0.1:10025 inet n - - - - smtpd

    -o content_filter=

    -o local_recipient_maps=

    -o relay_recipient_maps=

    -o smtpd_restriction_classes=

    -o smtpd_client_restrictions=

    -o smtpd_helo_restrictions=

    -o smtpd_sender_restrictions=

    -o smtpd_recipient_restrictions=permit_mynetworks,reject

    -o mynetworks=127.0.0.0/8

    -o strict_rfc821_envelopes=yes

    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

    -o smtpd_bind_address=127.0.0.1


    Перезапустим Postfix:


    /etc/init.d/postfix restart


    Выполним


    netstat -tap


    убедимся, что Postfix (master) прослушивает 25 (smtp) и 10025 порт, а amavisd-new расположен на 10024:


    root@server1:/etc/postfix# netstat -tap

    Active Internet connections (servers and established)

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

    tcp 0 0 localhost.localdo:10024 *:* LISTEN 15645/amavisd (mast

    tcp 0 0 localhost.localdo:10025 *:* LISTEN 16677/master

    tcp 0 0 localhost.localdo:mysql *:* LISTEN 6177/mysqld

    tcp 0 0 *:www *:* LISTEN 5367/apache2

    tcp 0 0 *:smtp *:* LISTEN 16677/master

    tcp6 0 0 [::]:imaps [::]:* LISTEN 14020/couriertcpd

    tcp6 0 0 [::]:pop3s [::]:* LISTEN 14088/couriertcpd

    tcp6 0 0 [::]:pop3 [::]:* LISTEN 14051/couriertcpd

    tcp6 0 0 [::]:imap2 [::]:* LISTEN 13983/couriertcpd

    tcp6 0 0 [::]:ssh [::]:* LISTEN 4006/sshd

    tcp6 0 52 server1.example.com:ssh 192.168.0.210%8191:3340 ESTABLISHED 4059/0

    root@server1:/etc/postfix#


    10 Установка Razor, Pyzor And DCC и настройка SpamAssassin


    Razor, Pyzor и DCC это спам фильтры, которые используются совместно для фильтрации в сети. Установим Razor и Pyzor

    apt-get install razor pyzor


    DCC не содержится в репозитории Ubuntu 8.04, поэтому мы его установим так:


    cd /tmp

    wget http://launchpadlibrarian.net/11564361/dcc-server_1.3.42-5_i386.deb

    wget http://launchpadlibrarian.net/11564359/dcc-common_1.3.42-5_i386.deb

    dpkg -i dcc-common_1.3.42-5_i386.deb

    dpkg -i dcc-server_1.3.42-5_i386.deb


    Скажем SpamAssassin использовать эти три программы. Отредактируем /etc/spamassassin/local.cf добавив несколько строчек в него:


    vi /etc/spamassassin/local.cf


    [...]

    #dcc

    use_dcc 1

    dcc_path /usr/bin/dccproc


    #pyzor

    use_pyzor 1

    pyzor_path /usr/bin/pyzor


    #razor

    use_razor2 1

    razor_config /etc/razor/razor-agent.conf


    #bayes

    use_bayes 1

    use_bayes_rules 1

    bayes_auto_learn 1


    Мы должны включить плагин DCC в SpamAssassin. Откроем /etc/spamassassin/v310.pre и раскомментируем такую строчку loadplugin Mail::SpamAssassin::Plugin::DCC :


    vi /etc/spamassassin/v310.pre


    [...]

    # DCC - perform DCC message checks.

    #

    # DCC is disabled here because it is not open source. See the DCC

    # license for more details.

    #

    loadplugin Mail::SpamAssassin::Plugin::DCC

    [...]


    Можно проверить настройки SpamAssassin выполнив:


    spamassassin —lint


    Вывод не должен содержать никаких ошибок.


    Перезапускаем amavisd-new:


    /etc/init.d/amavis restart


    Обновим набор правил для SpamAssassin следующим образом:


    sa-update —no-gpg


    Добавим в cron задание, чтобы набор правил обновлялся регулярно. Запустим


    crontab -e


    чтобы открыть редактор cron и добавим в него следующее задание:


    23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null


    Это позволит обновлять набор правил каждый 2 день в 4 часа 23 минуты.


    11 Предупреждения при превышении квоты


    Для того чтобы получать сообщения об превышении квоты почтовых ящиков пользователей сделаем так:


    cd /usr/local/sbin/

    wget http://puuhis.net/vhcs/quota.txt

    mv quota.txt quota_notify

    chmod 755 quota_notify


    Откроем для редактирования файл /usr/local/sbin/quota_notify отредактируем переменные сверху. В конце файла находятся две строчки где вы должны добавить % для подписи:


    vi /usr/local/sbin/quota_notify


    [...]

    my $POSTFIX_CF = "/etc/postfix/main.cf";

    my $MAILPROG = "/usr/sbin/sendmail -t";

    my $WARNPERCENT = 80;

    my @POSTMASTERS = ('postmaster@yourdomain.tld');

    my $CONAME = 'My Company';

    my $COADDR = 'postmaster@yourdomain.tld';

    my $SUADDR = 'postmaster@yourdomain.tld';

    my $MAIL_REPORT = 1;

    my $MAIL_WARNING = 1;

    [...]

    print "Subject: WARNING: Your mailbox is $lusers{$luser}% full.\n";

    [...]

    print "Your mailbox: $luser is $lusers{$luser}% full.\n\n";

    [...]


    Запустим


    crontab -e


    чтоб задать задание cron на выполнения скрипта


    0 0 * * * /usr/local/sbin/quota_notify &> /dev/null


    12 Проверка Postfix


    Чтоб ы посмотреть слушает ли Postfix порты SMTP-AUTH и TLS, выполним


    telnet localhost 25


    После установления подключения с вашим почтовым сервером Postfix введем следующее:


    ehlo localhost


    и увидим следующие строки


    250-STARTTLS

    и

    250-AUTH LOGIN PLAIN


    если все нормально:


    root@server1:/usr/local/sbin# telnet localhost 25

    Trying 127.0.0.1...

    Connected to localhost.localdomain.

    Escape character is '^]'.

    220 server1.example.com ESMTP Postfix (Ubuntu)

    ehlo localhost

    250-server1.example.com

    250-PIPELINING

    250-SIZE 10240000

    250-VRFY

    250-ETRN

    250-STARTTLS

    250-AUTH LOGIN PLAIN

    250-AUTH=LOGIN PLAIN

    250-ENHANCEDSTATUSCODES

    250-8BITMIME

    250 DSN

    quit

    221 2.0.0 Bye

    Connection closed by foreign host.

    root@server1:/usr/local/sbin#


    введем


    quit


    для того чтобы вернутся в оболочку Linux.


    13 Заполнение базы данных и ее тестирование


    Для заполнения базы данных будем использовать оболочку MySQL:


    mysql -u root -p

    USE mail;


    По крайней мере нам необходимо добавить записи в таблицы domains и users:


    INSERT INTO `domains` (`domain`) VALUES ('example.com');

    INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('sales@example.com', ENCRYPT('secret'), 10485760);


    (Пожалуйста, с осторожностью используйте синтаксис ENCRYPT во втором объявлении INSERT для шифрования пароля!)


    Если необходимо вставить данные в остальные две таблицы, сделаем так:


    INSERT INTO `forwardings` (`source`, `destination`) VALUES ('info@example.com', 'sales@example.com');

    INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');


    Выйдем с оболочки MySQL набрав


    quit;


    Большинству более удобно работать через графический интерфейс с MySQL, для этого можно использовать phpMyAdmin ( в данном примере необходимо набрать в строке вашего интернет браузера http://192.168.0.100/phpmyadmin/ или http://server1.example.com/phpmyadmin/) для администрирования базы данных mail . При создании пользователей, мы должны использовать функцию ENCRYPT для шифрования пароля.


    Таблица forwardings может иметь записи следующего вида:


    source

    destination


    info@example.com

    sales@example.com

    Перенаправляет почту предначначеную для info@example.com на sales@example.com

    @example.com

    thomas@example.com

    Создает ловушку для всех аккаунтов thomas@example.com. Вся почта домена example.com будет доставляться на адрес thomas@example.com, исключая тех кто находится в таблице users (например, если sales@example.com существует в таблице users, то письма направленные на sales@example.com будут по прежнему доставляться sales@example.com).

    @example.com

    @anotherdomain.tld

    Перенаправляет письма всех пользователей направленные на example.com на этих же пользователей в домен anotherdomain.tld. Например, письмо для thomas@example.com будет направленно на thomas@anotherdomain.tld.

    info@example.com

    sales@example.com, billing@anotherdomain.tld

    Перенапрваить почту для info@example.com на двух и большее количество адресатов. Все указанные адресаты получат копию почтового сообщения.

    Таблица transport может иметь записи такого вида:


    domain

    transport


    example.com

    :

    Delivers emails for example.com locally. This is as if this record would not exist in this table at all.

    example.com

    smtp:mail.anotherdomain.tld

    Delivers all emails for example.com via smtp to the server mail.anotherdomain.com.

    example.com

    smtp:mail.anotherdomain.tld:2025

    Delivers all emails for example.com via smtp to the server mail.anotherdomain.com, but on port 2025, not 25 which is the default port for smtp.

    example.com

    smtp:[1.2.3.4]
    smtp:[1.2.3.4]:2025
    smtp:[mail.anotherdomain.tld]


    The square brackets prevent Postfix from doing lookups of the MX DNS record for the address in square brackets. Makes sense for IP addresses.

    .example.com

    smtp:mail.anotherdomain.tld

    Mail for any subdomain of example.com is delivered to mail.anotherdomain.tld.

    *

    smtp:mail.anotherdomain.tld

    All emails are delivered to mail.anotherdomain.tld.

    joe@example.com

    smtp:mail.anotherdomain.tld

    Emails for joe@example.com are delivered to mail.anotherdomain.tld.


    Посмотри


    man transport


    чтобы узнать больше деталей.


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


    Важно: Postfix использует механизм кэширования для транспортов, и чтобы изменения сделанные в таблице transport вступили в действия, вам необходимо выполнить перезагрузку


    postfix reload


    14 Отправка электронного письма приветствия для создания почтового каталога


    При попытке получения почты с нового почтового ящика (через POP3/IMAP) вы получите сообщение о том, что почтовый каталог не существует. Почтовый каталог создается автоматически, когда приходит первое письмо, поэтому лучше всего отправлять письмо приветствия после создания нового почтового ящика.


    Установим пакет mailx:


    apt-get install mailx


    Для отправки письма приветствия на sales@example.com, мы сделаем так:


    mailx sales@example.com


    Вам будет предложено ввести тему, введите ее (например, добро пожаловать!), нажмите ENTER и в следующих строчках напишите ваше сообщения. Когда закончим набирать сообщения необходимо набрать CTRL+D и еще раз ENTER:


    root@server1:/usr/local/sbin# mailx sales@example.com

    Subject: Welcome <-- ENTER

    Welcome! Have fun with your new mail account. <-- ENTER

    <-- CTRL+D

    Cc: <-- ENTER

    root@server1:/usr/local/sbin#

    Категория: Настройка | Добавил: Raxxell (13.10.2010)
    Просмотров: 1655 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]