in Профессиональное

Установка QmailToaster на CentOS 5 или Qmail сравнительно малой кровью

Для меня установка QMail это всегда огонь, вода и медные трубы. В репозиториях для CentOS 5 судя по всему пакета нет (и вряд ли будет), поэтому наименее тернистым выглядит полуавтоматическая установка QmailToaster, описание которой приведено ниже (перевод официальной документации):


Сразу оговорюсь, что CentOS 5 x86_64 у меня уже была установлена, поэтому шаги по установке ОС опускаем.

Подготовка к установке QmailToaster

Прежде всего проверяем selinux

[root@name ~]# getenforce

Если отображается Disabled, то все окей. Если нет, то отключаем в ручную:
[root@name ~]# vim /etc/selinux/config

Заменяем:
SELINUX=enforcing
На:
SELINUX=disabled

Аналогичную операцию можно выполнить, запустив утилиту setup и

  • Выбрать Firewall Configuration
  • Выбрать Run Tool
  • Изменить Security Level на Disabled.
  • Изменить SELinux на Disabled.
  • Выбрать OK.
  • После желательно перезагрузиться, чтобы изменения в настройках selinux вступили в силу.

    Если вы хотите чтобы selinux оставался активен, нужно выполнить такую команду:

    setsebool -P httpd_can_network_connect=1

    Директория для инсталяции

    Войдите в систему под root’ом, создайте директорию qtms-install

    mkdir -p /usr/src/qtms-install

    Пре-установочные скрипты

    Перемещаемся в директорию /usr/src/qtms-install, которую создали ранее

    cd /usr/src/qtms-install

    cnt50-deps.sh и cnt5064-deps.sh

    Для i386: нужно скачать скрипт cnt50-deps.sh

    wget http://www.qmailtoaster.com/centos/cnt50/cnt50-deps.sh

    Для x86_64: нужно скачать скрипт cnt5064-deps.sh

    wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-deps.sh

    Далее их нужно запустить:
    Для i386: выполняем cnt50-deps.sh

    sh cnt50-deps.sh

    Для x86_64: выполняем cnt5064-deps.sh

    sh cnt5064-deps.sh

    cnt50-perl.sh и cnt5064-perl.sh

    Для i386: нужно скачать скрипт cnt50-perl.sh

    wget http://www.qmailtoaster.com/centos/cnt50/cnt50-perl.sh

    Для x86_64: нужно скачать скрипт cnt5064-perl.sh

    wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-perl.sh

    Для i386: выполняем cnt50-perl.sh

    sh cnt50-perl.sh

    Для x86_64: выполняем cnt5064-perl.sh

    sh cnt5064-perl.sh

    Скрипт запросит ручную конфигурацию CPAN, отвечайте нихт ферштейн no ))
    Далее скрипт запросит несколько раз yes/no, не обращайте внимания, просто нажимайте ENTER, будет выбран ответ по-умолчанию.

    cnt50-svcs.sh и firewall.sh

    Скачиваем cnt50-svcs.sh (не забывайте, если у вас CentOS 5 x86_64, заменяйте cnt50 на cnt5064, т.е. будет cnt5064-svcs.sh):

    wget http://www.qmailtoaster.com/centos/cnt50/cnt50-svcs.sh
    или
    wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-svcs.sh

    Редактируем cnt50-svcs.sh (cnt5064-svcs.sh) вашим любимым редактором:

    vim cnt50-svcs.sh
    или
    vim cnt5064-svcs.sh

    Находим строку MYSQLPW=YOUR_MYSQL_ROOT_PASSWORD и меняем YOUR_MYSQL_ROOT_PASSWORD на пароль mysql пользователя root. Сохраняем файл.

    Скачиваем firewall.sh

    wget http://www.qmailtoaster.com/centos/cnt5064/firewall.sh
    или
    wget http://www.qmailtoaster.com/centos/cnt5064/firewall.sh

    Редактируем firewall.sh

    vim firewall.sh

    Находим строку MYIP=YOUR_IP_ADDRESS и изменяем YOUR_IP_ADDRESS на IP вашего сервера.

    Запускаем cnt50-svcs.sh

    sh cnt50-svcs.sh
    или
    sh cnt5064-svcs.sh

    Этот скрипт включает все необходимые сервисы. Затем скрипт коннектится к mysql как root, создает и настраивает привилегии для vpopmail, создает симлинк на krb5, редактирует php.ini, устанавливает runlevel 3 и настраивает файрволл, вызывая firewall.sh. Некоторые сервисы могут выдавать ошибки во время работы скрипта, не беспокойтесь ))

    Вы также можете утратить коннект если ваша сеть 192.168.0.0/16. Для того чтобы поправить это досадное недоразумение, поправьте должным образом /etc/sysconfig/iptables и перезапустите iptables.

    Также может понадобиться поправить строку коннекта к mysql:
    если у вас возникает ошибка ‘Access denied for user ‘root’@’localhost’ (using password: NO)’, измените строку cnt50-svcs.sh (cnt5064-svcs.sh)

    mysqladmin -u root password $MYSQLPW
    на
    mysqladmin -u root -p$MYSQLPW

    Обновление пакетов

    Теперь нужно обновить все пакеты в системе:

    yum -y update

    После успешного завершения обновления, перезагружаемся

    reboot

    Установка QmailToaster

    Загрузка необходимых пакетов QmailToaster

    Логинимся под root’ом и переходим в директорию /usr/src/qtms-install/

    cd /usr/src/qtms-install

    Загружаем скрипт current-download-script.sh, который и загрузит нам все необходимые пакеты для последующей установки и запускаем его:

    wget http://www.qmailtoaster.com/info/current-download-script.sh
    sh current-download-script.sh

    Вы можете спросить: а если возникнут проблемы? Например ошибки сборки RPM:

    Bad exit status from /var/temp/rpm-tmp.84356 (%build)
          error: File not found by glob: /usr/src/redhat/RPMS/x86_64/vpopmail-toaster*.rpm.

    И потом, при установке qmail-toaster :

    error: Failed dependencies :
          exim conflicts with qmail-toaster-1.03-1.3.16.x86_64
    error: Failed dependencies :
          qmail-toaster >= 1.03-1.3.16 is needed by qmail-pop3d-toaster-1.03-1.3.16.x86_64

    Нужно перед инсталляцией деинсталлировать exim и его зависимости:

    rpm -e --nodeps arpwatch
    rpm -e --nodeps sendmail
    rpm -e --nodeps exim

    Это должно помочь.

    Установка пакетов QmailToaster

    Скачиваем cnt50-install-script.sh (cnt5064-install-script.sh) – инсталлятор QmailToaster

    wget http://www.qmailtoaster.com/centos/cnt50/cnt50-install-script.sh
    или
    wget http://www.qmailtoaster.org/centos/cnt5064/cnt5064-install-script.sh

    Запускаем инсталятор:

    sh cnt50-install-script.sh
    или
    sh cnt5064-install-script.sh

    Скрипт запросит подтверждение на установку каждого пакета. Просто нажимаем Enter, чтобы выбирать Yes по умолчанию.

    Если после устанвоки ничего не заработает: открываем инсталляционный скрипт, видим там дюжину секций или около того. Вы можете копипастнуть секцию и запустить ее независимо. Например, видим что не работает imap. Запускаем ручками:

    DISTRO=cnt50
    ARCH=i386
    BDIR=redhat
    IMAP=courier-imap-toaster-*.src.rpm
    rpmbuild --rebuild --with $DISTRO $IMAP
    rpm -Uvh /usr/src/$BDIR/RPMS/$ARCH/courier-imap-toaster*.rpm

    Видим что ошибка возникает потому что пакет cyrus-imap вызывает конфликт. Удаляем его

    yum -y remove cyrus-imapd-2.3.7-2.el5.i386

    Затем опять запускаем проблемный сегмент и тем самым решаем проблему.

    Если в ходе инсталляции, при запуске sh cnt50-install-script.sh вы получаете ошибки vpopmail-toaster-5.4.13-1.3.1 (типа таких ‘cant run even the simplest ANSI C program…. create usergroup, create user…’):

  • проверьте, установлен ли postfix командой rpm -q postfix
  • если установлен:
  • пробуеем удалить его rpm -e –nodeps postfix
  • удаляем строку postfix:x:89: из /etc/group
  • добавьте нужную группу groupadd –gid 89 vchkpw
  • добавьте нужного пользователя adduser –gid 89 vpopmail
  • теперь пробуйте запустить sh cnt50-install-script.sh еще раз. Можете пропустить модули, которые были собраны ранее.
  • Проверка сервисов

    После установки мы должны убедиться в том что все нужные сервисы будут запущены при перезгрузке.

    • Выполняем команду setup
    • Выбираем System Services и выбираем Run Tool
    • Проверям, выбраны ли требуемые сервисы:
      • acpid
      • anacron
      • atd
      • autofs
      • cpuspeed
      • crond
      • freshclam
      • haldaemon
      • httpd
      • iptables
      • kudzu
      • messagebus
      • mysqld
      • network
      • ntpd
      • qmail
      • smartd
      • sshd
      • syslog
      • xinet
    • Install djbdns

      Установка djbdns (если вы не хотите bind)

      #Удаяем bind
      rpm -e --nodeps bind bind-chroot
      
      #Собираем djbdns для i386
      rpmbuild --rebuild --with cnt50 djbdns*.src.rpm
      
      #Собираем djbdns для x86_64
      rpmbuild --rebuild --with cnt5064 djbdns*.src.rpm
      
      # Устанавливаем djbdns для i386
      rpm -Uvh ../redhat/RPMS/i386/djbdns-localcache*.rpm
      
      # Устанавливаем djbdns для x86_64
      rpm -Uvh ../redhat/RPMS/x86_64/djbdns-localcache*.rpm
      
      # Добавляем search your-domain.com в /etc/resolv.conf (не забывайте заменять your-domain.com на ваше значение)
      echo "search your-domain.com" > /etc/resolv.conf
      
      # Добавляем nameserver 127.0.0.1 в /etc/resolv.conf
      echo "nameserver 127.0.0.1" >> /etc/resolv.conf
      
      # перезагружаемся
      reboot

      Конфигурация QmailToaster

      Проверяем статус mail сервера

      qmailctl stat

      Вывод команды должен выглядеть примерно так:

      root@gateway ~]# qmailctl stat
      authlib: up (pid 2425) 65 seconds
      clamd: up (pid 2425) 65 seconds
      imap4: up (pid 2421) 65 seconds
      imap4-ssl: up (pid 2423) 65 seconds
      pop3: up (pid 2414) 65 seconds
      pop3-ssl: up (pid 2409) 65 seconds
      send: up (pid 2416) 65 seconds
      smtp: up (pid 2418) 65 seconds
      spamd: up (pid 2407) 65 seconds
      authlib/log: up (pid 2417) 65 seconds
      clamd/log: up (pid 2417) 65 seconds
      imap4/log: up (pid 2422) 65 seconds
      imap4-ssl/log: up (pid 2424) 65 seconds
      pop3/log: up (pid 2415) 65 seconds
      pop3-ssl/log: up (pid 2413) 65 seconds
      send/log: up (pid 2420) 65 seconds
      smtp/log: up (pid 2419) 65 seconds
      spamd/log: up (pid 2408) 65 seconds

      Добавляем домен

      # Добавляем домен
      /home/vpopmail/bin/vadddomain your-domain.com
      
      # Добавляем пользователя
      /home/vpopmail/bin/vadduser you@your-domain.com 
      
      # Редактируем /etc/php.ini и устанавливаем register_globals = On
      service httpd restart

      Открываем браузер и переходим по URL http://www.your-domain.com/admin-toaster/
      Username: admin
      Password: toaster
      Тут вы можете изменить пароль.

      # Редактируем /etc/php.ini и устанавливаем register_globals = Off, рестартим апач
      service httpd restart

      Проверяем полученный mail сервер:

    • http://www.your-domain.com/webmail
    • Входите с использованием полного email адреса и пароля
    • Отправьте самому себе email – должно работать
    • Отправьте email на другой (внешний) адрес
    • Примите письмо на внешний адрес и ответьте на него

    Если не отображается Isoqlog нужно выполнить следующее:

      sh /usr/share/toaster/isoqlog/bin/cron.sh

    Уф. Написать это было не менее утомительно чем сделать ) Не говоря уж о том чтобы написать с нуля. Спасибо разработчику QmailToaster, а я на этом пойду спать. Благо то немногое, что мне нужно от Qmail, закрутилось завертелось.

    Write a Comment

    Comment

    *

      • Да ладно те ) Оригинал то не я писал. Я вообще зарекаюсь ставить qmail… Буду пробовать Exim или Postfix.