De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Qmail + Patches + Performance Tuning, the Debian AMD64 way

Colaboração: Dorian Bolivar

Data de Publicação: 29 de Janeiro de 2007

O Debian possui um port não-oficial para AMD64, não muito conhecido, mas que funciona perfeitamente nessa arquitetura, sendo uma ótima opção para os fãs da distribuição, que muitas vezes acabavam optando por instalar o Debian i386 ou o Ubuntu Server nessas máquinas. Apesar de ser um port não-oficial, praticamente todos os pacotes dos releases oficiais encontram-se disponíveis, e o melhor, há atualizações de segurança via os canais oficiais.

Como eu disse, praticamente todos os pacotes encontram-se disponíveis. Infelizmente isso não é verdade para o qmail-src e o ucspi-tcp-src, pacotes que possibilitam a instalação do Qmail à la Debian, ou seja, da forma mais fiel possível aos padrões da distribuição.

Existem vários tutoriais disponíveis na Internet para instalação do Qmail. Porém, poucos respeitam as características das distribuições, como gerenciamento de pacotes, estrutura de diretórios etc., e menos ainda são concisos e objetivos o suficiente para permitir uma instalação rápida e limpa do Qmail. Além disso, há uma grande diversidade de patches para o Qmail disponíveis, de várias fontes, gerando uma certa confusão a respeito.

Como um purista, gosto de ser o mais fiel possível aos padrões da distribuição que estou usando. Isso facilita em muito várias tarefas de administração do sistema, como o gerenciamento dos pacotes, configuração, e integração com os demais pacotes da distribuição.

De forma a suprir as lacunas encontradas, criei este tutorial, que visa atender os seguintes objetivos principais:

  • Propor um roteiro conciso e direto para a compilação e instalação do Qmail no Debian para AMD64, seguindo as convenções da distribuição, e com patches especiais para permitir um performance-tuning do Qmail.

  • Identificar e ajustar parâmetros-chave da configuração do Qmail para maximizar a performance do sistema, em um cenário com alta taxa de injeção de e-mails.

O método descrito aqui também pode ser utilizado no Debian i386 ou mesmo em outras distribuições derivadas do Debian. Já realizei estes procedimentos com sucesso absoluto em vários servidores Linux que administro, com distribuições Debian i386, Debian AMD64 e Ubuntu Server AMD64. Note também que o software daemontools não foi instalado, de forma a utilizar o mecanismo de inicialização padrão do Debian, mas nada impede que você faça isso, a seu critério e preferência.

Bom proveito.

Nota de copyright

Este documento adere à licença Creative Commons, ressaltando-se o seguinte:

  • Pode ser redistribuído livremente, desde que seja mantido integralmente o texto original, sem quaisquer alterações.

  • O autor deve ser sempre devidamente citado junto com o documento.

Procedimentos

  • Instalar pacotes de pré-requisitos para compilação e funcionamento:

  • Suíte para compilação: gcc, make, autoconf, automake, patch, patchutils etc.

  • Módulos do Perl: libdigest-hmac-perl, libdigest-sha1-perl, libnet-dns-perl, libhtml-parser-perl, libhtml-tagset-perl

  • Outros pacotes: libssl-dev, debconf, dpkg-dev, fakeroot, sudo, groff-base

  • Fazer download manual dos pacotes qmail-src e ucspi-tcp-src (apenas AMD64): http://http.us.debian.org/debian/pool/non-free/q/qmail/qmail-src_1.03-38_all.deb

    http://http.us.debian.org/debian/pool/non-free/u/ucspi-tcp/ucspi-tcp-src_0.88-9_all.deb

  • Remover o MTA default (Exim ou Postfix), ignorando as dependências, já que depois o Qmail irá atendê-las:

        dpkg --ignore-depends=exim4 --purge exim4
        dpkg --ignore-depends=exim4-daemon-light --purge exim4-daemon-light
        dpkg --ignore-depends=exim4-daemon-light --purge exim4-base
        dpkg --ignore-depends=exim4-daemon-light --purge exim4-config
        
        ou
        
        dpkg --ignore-depends=postfix --purge postfix
    

  • Opcional: limpar spool e logs antigos, se o dpkg já não o tiver feito.

  • Opcional: exportar variáveis de ambiente CFLAGS e CXXFLAGS para compilação otimizada para a máquina (maior performance).

  • Compilar e instalar o ucspi-tcp-src:

        dpkg -i ucspi-tcp-src_0.88-9_all.deb
        build-ucspi-tcp
    

  • Puxar e descompactar os patches do Qmail do seguinte endereço:

    <A HREF="http://megaz.arbuz.com/download/qmail_patches.tar.gz">http://megaz.arbuz.com/download/qmail_patches.tar.gz

    Vamos aplicar os seguintes patches:

        qmail-big-ext-todo.patch
        qmail-big-concurrency.patch
        qmail-doublebounce-trim.patch
        qmail-1.03-pop3d-stat.patch
        qmail-bounce.patch
        qmail-bouncecontrol-1.03.patch
        qmail-accept-5xx.patch
    

    Para uma descrição e justificativa de cada patch, leia os sites de referência e o código-fonte do patch. Outros patches já foram aplicados automagicamente pelo build-qmail. Com isso, o Qmail passa a ter todos os patches recomendados pelo autor, além de alguns outros para incrementar ainda mais suas funcionalidades.

  • Compilar e instalar o qmail-src:

        dpkg -i qmail-src_1.03-38_all.deb
        build-qmail
    

    Na parte This can take long time, depending on your machine, não aperte ENTER, aguarde.

  • Aplicar os patches:

    Abra uma outra shell como root, para aplicarmos os patches. Mude para o diretório de compilação do Qmail:

    cd /tmp/qmail/qmail-1.03

    Aplique os patches, de acordo com o local onde foram descompactados. No meu caso:

    patch < /root/qmail/qmail_patches/qmail-big-ext-todo.patch

    E assim por diante com os demais patches.

  • Alterar arquivos na árvore do Qmail para correta compilação e geração do pacote .deb:

  • conf-spawn: alterar a primeira linha para 500.
  • debian/debianize-binary-tree: adicionar |qmail-todo após sendmail.

  • Continuar com o build do Qmail, na shell original. Instale o pacote após o build.

    PRONTO! Qmail + patches corretamente compilado e instalado, the Debian way, em arquitetura AMD64!

  • Configuração do Qmail e performance tuning para um sistema com alta taxa de envio de e-mails. Esta é apenas uma referência, ajuste os parâmetros de acordo com suas necessidades. Leia a documentação do Qmail e dos patches para entender o porquê de tais parâmetros. Talvez você precise alterar outros arquivos de configuração do Qmail; leia o manual e verifique se estão corretos. O Debian geralmente já os configura corretamente.

        echo 400 >concurrencylocal
        echo 400 >concurrencyremote
        echo 10000 >bouncemaxbytes
    

  • Opcional: desabilitar o log do Qmail (apenas para sistemas que não precisam deles), e remover (ou aumentar) o ulimit na inicialização do mesmo. Somente faça isso se você tiver certeza do que está fazendo!

    Editar o arquivo /etc/init.d/qmail, e:

  • Comentar todas as linhas logger.
  • Remover todas as referências à variável $logger.
  • Comentar a linha ulimit -v 16384 (ou aumentar o valor).
  • Opcional: otimize todo o seu sistema, desde o kernel, já que a performance do Qmail (e qualquer outro serviço) depende disso. Há várias configurações a fazer; isso eu deixo para seu divertimento.

Referências

Error: No domain found