É assim que eu configurei o e-mail em nossas máquinas de produção. Estes são os critérios que precisávamos:
- Contas de e-mail
- Aliases de email (remetentes)
- IMAP, POP3 e SMTP
"Fácil" (tl; dr)
Primeiro, quero abordar o que parece ser a solução mais fácil .
sudo tasksel install mail-server
Vários problemas com isso ocorreram quando tentamos isso: Primeiro, instala o Dovecot, o que é bom para a maioria, mas consideramos o Courier como o melhor dos dois para as necessidades do nosso . Segundo, ele utiliza o Postfix, o que é ótimo, mas também precisamos do Exim, pois é um servidor MTA / SMTP mais poderoso. Terceiro, ele instala o MySQL - na configuração que eu utilizo, preferimos arquivos planos para configuração, já que é um ponto a menos de quebra. Pense no que aconteceria se o MySQL falhasse por algum motivo desconhecido. Caso contrário, o resto dos pacotes é bastante simples e fácil de manter para um pequeno serviço de e-mail (pense em 1-2 domínios de e-mail no total).
Nossa configuração
Estrutura de Diretórios
Nós nos perdemos um pouco fora do caminho das configurações normais, mas isso facilita o gerenciamento.
Todos os nossos e-mails são armazenados em /var/mail/virtual/<domain>/<user>/mail
Então, para exemplos futuros, usaremos [email protected]
, [email protected]
, [email protected]
para representar um endereço de e-mail, um encaminhador para [email protected]
e um endereço ruim, respectivamente. No exemplo acima, seria /var/mail/virtual/example.com/email/mail
.
Eu também mantenho uma lista de todos os domínios no servidor em /etc/valiases
, mas mais sobre isso depois.
Postfix
Esta é mais ou menos a parte fácil da configuração. Basta instalar o pacote postfix
.
Exim
Instale o Exim com apt-get install exim4 exim4-base exim4-config exim4-daemon-heavy
Uma vez instalado, você precisará editar a configuração padrão do exim para substituir ou adicionar os seguintes valores:
domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes
(Estas linhas aparecerão em partes diferentes do arquivo, substitua cada uma delas adequadamente)
Depois de concluir, reconstrua a configuração do exim com update-exim4.conf
. Isso conclui as alterações necessárias para o Exim
Courier
Instale o Courier com courier-base
. Isso deve instalar courier-authdaemon
, courier-authlib*
, courier-imap*
, courier-pop*
, courieruserinfo
, courier-ssl
Honestamente, não há muita configuração fora do padrão. Você só precisa criar um banco de dados do usuário.
Contas
Exim e Courier verificam alguns lugares para ver se um login ou um e-mail recebido são válidos. O Exim verifica se o domínio está listado como um nome de host local ou se o domínio está em /var/mail/virtual
ou se o domínio está em /etc/valiases
.
Criando contas de e-mail
Eu finalmente criei várias ferramentas para simplificar esse processo, mas adicionar um novo usuário segue o seguinte:
mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/
Em seguida, adicione o endereço ao courier userdb - para que eles possam efetuar login
userdb [email protected] set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail
Certifique-se de substituir os valores quando apropriado. Também - uid
e gid
precisam para serem os IDs numéricos de usuário / grupo para o usuário de e-mail.
userdbpw -md5 | userdb [email protected] set systempw
Isso solicitará uma senha, insira a que você deseja usar para a conta.
makeuserdb
Por fim, gere os arquivos hash / shadow do userdb. Reinicie o Courier e teste se suas alterações funcionam:
authtest [email protected]
Deve produzir algo semelhante a
Authentication succeeded.
Authenticated: [email protected] (uid 8, gid 8)
Home Directory: /var/mail/virtual/example.com/email
Maildir: /var/mail/virtual/example.com/email/mail
Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
Options: (none)
Se você ver "Falha na Autenticação: Operação não permitida", edite / etc / courier / authdaemonrc e adicione authuserdb à linha authmodulelist.
Após todos os testes terem sido confirmados, reinicie os vários serviços envolvidos ( courier-authdaemon
, exim4
), abra as portas 143, 25, 586, 495, 110 e configure as contas no seu cliente de email favorito.
Criando aliases de e-mail
Para cada domínio, você deve criar um arquivo em /etc/valiases
(criar, se não existir) com pelo menos a seguinte linha:
*: :fail: No user at this address.
O que isto diz: Se o e-mail recebido não corresponder a qualquer conta de e-mail que eu tenha arquivado, o e-mail deve estar com falha e ser devolvido com uma mensagem: "Nenhum usuário neste endereço". Assim, todos os e-mails enviados para dizer: [email protected]
seriam devolvidos como uma falha.
No entanto, temos alguns endereços de e-mail que queremos manter em outro lugar - por exemplo, [email protected] - para isso, precisamos criar /etc/valiases/example.com
e o conteúdo do arquivo deve ser o seguinte:
fwd: [email protected]
*: :fail: No user at this address.
Dessa forma, mesmo que [email protected] não corresponda a nenhuma conta de e-mail no servidor, ela corresponderá ao arquivo /etc/valiases
e o e-mail será encaminhado para [email protected] - no entanto, foo @ example .com ainda falhará com a mensagem "Nenhum usuário neste endereço".