Servidor de E-mail · 5 min read · Nov 09, 2025

Usuários e Domínios Virtuais Com Postfix, Courier E MySQL (Fedora Core 5)

Usuários e Domínios Virtuais Com Postfix, Courier E MySQL (Fedora Core 5)

Versão 1.0
Autor: Falko Timme

Este tutorial é Copyright (c) 2006 por Falko Timme. É derivado de um tutorial de Christoph Haas que você pode encontrar em http://workaround.org. Você é livre para usar este tutorial sob a licença Creative Commons 2.5 ou qualquer versão posterior.

Este documento descreve como instalar um servidor de e-mail baseado em Postfix que é baseado em usuários e domínios virtuais, ou seja, usuários e domínios que estão em um banco de dados MySQL. Também vou demonstrar a instalação e configuração do Courier (Courier-POP3, Courier-IMAP), para que o Courier possa autenticar contra o mesmo banco de dados MySQL que o Postfix utiliza.

O servidor Postfix resultante é capaz de SMTP-AUTH e TLS e quota (quota não está embutido no Postfix por padrão, vou mostrar como corrigir seu Postfix adequadamente). As senhas são armazenadas em forma criptografada no banco de dados (a maioria dos documentos que encontrei lidava com senhas em texto simples, o que é um risco de segurança). Além disso, este tutorial cobre a instalação do Amavisd, SpamAssassin e ClamAV para que os e-mails sejam escaneados em busca de spam e vírus.

A vantagem de tal configuração “virtual” (usuários e domínios virtuais em um banco de dados MySQL) é que é muito mais performática do que uma configuração baseada em usuários de sistema “reais”. Com essa configuração virtual, seu servidor de e-mail pode lidar com milhares de domínios e usuários. Além disso, é mais fácil de administrar porque você só precisa lidar com o banco de dados MySQL ao adicionar novos usuários/domínios ou editar os existentes. Não há mais comandos postmap para criar arquivos db, não há mais recarregamento do Postfix, etc. Para a administração do banco de dados MySQL, você pode usar ferramentas baseadas na web como o phpMyAdmin, que também será instalado neste guia. A terceira vantagem é que os usuários têm um endereço de e-mail como nome de usuário (em vez de um nome de usuário + um endereço de e-mail), o que é mais fácil de entender e lembrar.

Este tutorial é baseado no Fedora Core 5 (i386). Você já deve ter configurado um sistema Fedora básico, como descrito aqui (para um sistema x86_64, mas o procedimento para sistemas i386 é o mesmo): https://www.howtoforge.com/perfect_setup_fedora_core_5 e https://www.howtoforge.com/perfect_setup_fedora_core_5_p2. Além disso, você deve garantir que o firewall esteja desligado (pelo menos por enquanto) e que SELinux esteja desativado (isso é importante!), como mostrado em https://www.howtoforge.com/perfect_setup_fedora_core_5_p3.

Este guia é destinado a ser um guia prático; não cobre os fundamentos teóricos. Eles são tratados em muitos outros documentos na web.

Este documento vem sem garantia de qualquer tipo! Quero dizer que este não é o único jeito de configurar tal sistema. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!

1 Editar /etc/hosts

Nosso nome de host neste exemplo é server1.example.com, e ele tem o endereço IP 192.168.0.100, então mudamos /etc/hosts da seguinte forma:

vi /etc/hosts

| # Não remova a linha a seguir, ou vários programas # que requerem funcionalidade de rede falharão. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 |

2 Configurar Um Repositório Adicional Para Pacotes Fedora

Alguns dos pacotes que temos que instalar (como courier-imap) não estão incluídos nos repositórios oficiais do Fedora, então precisamos adicionar outro repositório ao yum:

rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpm

Depois, devemos definir enabled como 1 em /etc/yum.repos.d/enlartenment.repo:

vi /etc/yum.repos.d/enlartenment.repo

| [enlartenment] name=Repositório Enlartenment para $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Repositório Enlartenment para $releasever - Fontes baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |

Em seguida, importamos a chave GPG desse repositório:

rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf

3 Instalar Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Isso pode ser instalado com um único comando:

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-devel

Quando você vê isso:

warnings: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2  
Chave pública para ntp-4.2.0.a.20050816-11.FC5.i386.rpm não está instalada  
Recuperando chave GPG de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora  
Importando chave GPG 0x4F2A6FD2 "Fedora Project <[email protected]>"  
Está tudo bem [y/N]:

por favor, responda com y.

4 Aplicar Patch de Quota Ao Postfix

Precisamos obter o rpm fonte do Postfix, patchá-lo com o patch de quota, construir um novo pacote rpm do Postfix e instalá-lo.

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm  
rpm -ivh postfix-2.2.8-1.2.src.rpm  
cd /usr/src/redhat/SOURCES  
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz  
gunzip postfix-2.2.8-vda.patch.gz  
cd /usr/src/redhat/SPECS/

Agora devemos editar o arquivo postfix.spec:

vi postfix.spec

Mude %define MYSQL 0 para %define MYSQL 1, adicione Patch0: postfix-2.2.8-vda.patch à estrofe # Patches, e finalmente adicione %patch0 -p1 -b .vda à estrofe %setup -q:

| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Aplicar patches obrigatórios %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch4 -p1 -b .postfix-hostname-fqdn %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |

Em seguida, construímos nosso novo pacote rpm do Postfix com suporte a quota e MySQL:

rpmbuild -ba postfix.spec

Você verá muitos avisos como estes que pode ignorar:

msg.h:12:1: warning: "/*" within comment  
msg.h:14:1: warning: "/*" within comment  
msg.h:33:1: warning: "/*" within comment  
msg.h:34:1: warning: "/*" within comment  
msg.h:35:1: warning: "/*" within comment  
msg.h:36:1: warning: "/*" within comment

Nosso pacote rpm do Postfix é criado em /usr/src/redhat/RPMS/i386, então vamos lá e instalá-lo:

cd /usr/src/redhat/RPMS/i386  
rpm -ivh postfix-2.2.8-1.2.i386.rpm

(Se você tiver problemas para criar o pacote rpm do Postfix, pode baixar o meu daqui.)

5 Definir Senhas MySQL E Configurar phpMyAdmin

Inicie o MySQL:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

Em seguida, defina senhas para a conta root do MySQL:

mysqladmin -u root password yourrootsqlpassword  
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Agora configuramos o phpMyAdmin. Crie /usr/share/phpmyadmin/config.inc.php:

vi /usr/share/phpmyadmin/config.inc.php

| |

Em seguida, mudamos a configuração do Apache para que o phpMyAdmin permita conexões não apenas de localhost:

vi /etc/httpd/conf.d/phpmyadmin.conf

| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # # Order allow,deny # Allow from 127.0.0.1 # |

Em seguida, criamos os links de inicialização do sistema para o Apache e o iniciamos:

chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

Agora você pode direcionar seu navegador para http://server1.example.com/phpmyadmin/ e fazer login com o nome de usuário root e sua nova senha root do MySQL.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.