Postfix Tutorial · 6 min read · Sep 28, 2025
Usuários e Domínios Virtuais Com Postfix, Courier E MySQL (CentOS 5.1)
Usuários e Domínios Virtuais Com Postfix, Courier E MySQL (CentOS 5.1)
Versão 1.0
Autor: Falko Timme
Este tutorial é Copyright (c) 2007 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 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 demonstrarei 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 usa.
O servidor Postfix resultante é capaz de SMTP-AUTH e TLS e quota (quota não está embutido no Postfix por padrão, eu mostrarei 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 verificados quanto a 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 eficiente do que uma configuração baseada em usuários de sistema “reais”. Com esta 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 tutorial. 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 CentOS 5.1 (i386). Você já deve ter configurado um sistema básico CentOS, conforme descrito aqui: https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig e https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-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 no capítulo seis em https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3.
Este tutorial é 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 esta não é a única maneira 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 ::1 localhost6.localdomain6 localhost6 |
2 Instalar Alguns Softwares
Primeiro, importamos as chaves GPG para pacotes de software:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*Então, atualizamos nossos pacotes existentes no sistema:
yum updateAgora instalamos alguns softwares que precisamos mais tarde:
yum groupinstall 'Development Tools'yum groupinstall 'Development Libraries'3 Instalar Apache, MySQL, phpMyAdmin
Primeiro, habilitamos o repositório RPMforge em nosso sistema CentOS, pois muitos dos pacotes que vamos instalar ao longo deste tutorial não estão disponíveis nos repositórios oficiais do CentOS 5.1:
rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm(Se o link acima não funcionar mais, você pode encontrar a versão atual do rpmforge-release aqui: http://apt.sw.be/packages/rpmforge-release/)
Depois, podemos instalar os pacotes necessários com um único comando (incluindo os pacotes que precisamos para compilar o Courier-IMAP):
yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel4 Instalar Courier-IMAP, Courier-Authlib, E Maildrop
Infelizmente, não existem pacotes rpm para Courier-IMAP, Courier-Authlib e Maildrop, portanto, temos que instalá-los conforme descrito neste tutorial: Como Instalar courier-imap, courier-authlib, E maildrop No Fedora, RedHat, CentOS
Caso você tenha problemas para criar os pacotes rpm, pode baixar os meus:
- courier-authlib-0.60.2-1.i386.rpm
- courier-authlib-devel-0.60.2-1.i386.rpm
- courier-authlib-mysql-0.60.2-1.i386.rpm
- courier-imap-4.2.1-1.i386.rpm
- maildrop-2.0.4-1.i386.rpm
5 Aplicar Patch de Quota Ao Postfix
Precisamos obter o rpm de origem do Postfix, aplicar 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/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm
rpm -ivh postfix-2.3.3-2.src.rpmO último comando mostrará alguns avisos que você pode ignorar:
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using rootcd /usr/src/redhat/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd /usr/src/redhat/SPECS/Agora devemos editar o arquivo postfix.spec:
vi postfix.specMude %define MYSQL 0 para %define MYSQL 1, adicione Patch0: postfix-2.3.3-vda.patch à estrofe # Patches, e finalmente adicione %patch0 -p1 -b .vda à estrofe %setup -q:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.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 %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
Então, construímos nosso novo pacote rpm do Postfix com suporte a quota e MySQL:
rpmbuild -ba postfix.specVocê 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 commentNosso pacote rpm do Postfix é criado em /usr/src/redhat/RPMS/i386, então vamos lá:
cd /usr/src/redhat/RPMS/i386O comando
ls -lmostra os pacotes disponíveis:
[root@server1 i386]# ls -l
total 11280
-rw-r--r-- 1 root root 3819299 Dec 5 15:25 postfix-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 7655069 Dec 5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 50346 Dec 5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm
[root@server1 i386]#Escolha o pacote Postfix e instale-o assim:
rpm -ivh postfix-2.3.3-2.i386.rpm(Se você tiver problemas para criar o pacote rpm do Postfix, pode baixar o meu daqui: postfix-2.3.3-2.i386.rpm.)
6 Definir Senhas MySQL E Configurar phpMyAdmin
Inicie o MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startEntão, defina senhas para a conta root do MySQL:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordAgora configuramos o phpMyAdmin. Mudamos a configuração do Apache para que o phpMyAdmin permita conexões não apenas de localhost (comentando a estrofe
vi /etc/httpd/conf.d/phpmyadmin.conf| # # Aplicação web para gerenciar MySQL # # |
Em seguida, mudamos a autenticação no phpMyAdmin de cookie para http:
vi /usr/share/phpmyadmin/config.inc.php| [...] /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |
Então, criamos os links de inicialização do sistema para o Apache e o iniciamos:
chkconfig --levels 235 httpd on
/etc/init.d/httpd startAgora você pode direcionar seu navegador para http://server1.example.com/phpmyadmin/ ou http://192.168.0.100/phpmyadmin/ e fazer login com o nome de usuário root e sua nova senha root do MySQL.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.