Como faço para configurar um servidor de email?

59

Meu VPS está executando o Ubuntu e gostaria de receber e-mails no meu domínio.

Como configuro facilmente um servidor de correio para fazer isso?

Stefano Palazzo
fonte
3
Ótima pergunta, estou esperando por uma ótima resposta. Desenvolvi alguns servidores de correio ao longo dos anos e nunca foi tão fácil. Muitas decisões: qual servidor SMS, qual IMAP / POP, como armazenar os e-mails, como armazenar os usuários ... Eu sou completamente incapaz de dar uma resposta fácil .
21311 Javier Rivera

Respostas:

48

É assim que eu configurei o correio em nossas máquinas de produção. Estes são os critérios que precisávamos:

  • Contas de e-mail
  • Aliases de email (encaminhadores)
  • 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 ocorreram quando tentamos isso: Primeiro, ele instala o Dovecot, o que é bom para a maioria, mas consideramos Courier o melhor dos dois para nossas necessidades. Segundo, utiliza o Postfix, o que é ótimo, mas também precisamos do Exim, pois é um servidor MTA / SMTP mais poderoso. Terceiro, instala o MySQL - na configuração que utilizamos, preferimos arquivos simples para configuração, pois é um ponto a menos. Pense no que aconteceria se o MySQL falhasse por algum motivo desconhecido. Caso contrário, o restante dos pacotes será bem simples e fácil de manter para um pequeno serviço de correio (pense em um total de 1-2 domínios de e-mail).

Nossa configuração

Estrutura de Diretórios

Afastamo-nos um pouco do caminho das configurações normais, mas facilita o gerenciamento.

Todo o nosso e-mail é armazenado em /var/mail/virtual/<domain>/<user>/mailEntão, por exemplos futuros eu vou estar usando [email protected], [email protected], [email protected]para representar um endereço de e-mail, um encaminhador para ir para [email protected]e um endereço incorreto, respectivamente. No exemplo acima, seria /var/mail/virtual/example.com/email/mail.

Também mantenho uma lista de todos os domínios no servidor, /etc/valiasesmas mais sobre isso posteriormente.

Postfix

Esta é mais ou menos a parte fácil da configuração. Basta instalar o postfixpacote.

Exim

Instale o Exim com apt-get install exim4 exim4-base exim4-config exim4-daemon-heavyDepois de 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

(Essas linhas aparecerão em diferentes partes do arquivo, substitua cada uma de acordo)

Depois de concluído, reconstrua a configuração do exim com update-exim4.confIsso conclui as alterações necessárias para o Exim

Correio

Instale Courier com courier-baseisso 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ó precisará criar um banco de dados do usuário.

Contas

Exim e Courier verificam alguns lugares para ver se um login ou um email de entrada é válido. Cheques Exim se o domínio é listado como um nome de host local, ou se o domínio está em /var/mail/virtualou se o domínio está em /etc/valiases.

Criando contas de email

Acabei criando várias ferramentas para otimizar esse processo - mas a adição de um novo usuário vai para:

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 fazer 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 - uide gid precisam ser os IDs numéricos de usuário / grupo para o usuário de email.

userdbpw -md5 | userdb [email protected] set systempw

Isso solicitará uma senha, digite 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ê vir "Autenticação FAILED: Operação não permitida", edite / etc / courier / authdaemonrc e adicione authuserdb à linha authmodulelist.

Após a confirmação de todos os testes, 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 email

Para cada domínio, você deve criar um arquivo /etc/valiases(crie se não existir) com pelo menos a seguinte linha:

*: :fail: No user at this address.

O que isso diz: Se o email de entrada não corresponder a nenhuma conta de email que eu tenho no arquivo - o email deverá falhar e ser devolvido com uma mensagem: "Nenhum usuário neste endereço". Portanto, todo o correio enviado para dizer: [email protected]seria devolvido como uma falha.

No entanto, temos alguns endereços de e-mail que desejamos manter em outro lugar - por exemplo, [email protected] - para fazer isso, precisamos criar /etc/valiases/example.come 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 email no servidor, ele corresponde ao /etc/valiasesarquivo e o email será encaminhado para [email protected] - No entanto, [email protected] ainda falhará com uma mensagem "Nenhum usuário neste endereço".

Marco Ceppi
fonte
11
Isso vem com um número de ISBN?
Wesley Wesley
11
@WesleyDavid Eu não acho que a minha história festa vai aparecer como um ISBN :)
Marco Ceppi
Apenas seguindo estes - muito apreciados - editei acima para cobrir um erro que recebi na linha authtest.
Darren Greaves
@DarrenGreaves Thanks! Estou feliz que ajudou e obrigado pela atualização!
Marco Ceppi
Estou lutando para fazer tudo isso funcionar - só consegui o roteamento de valiases para funcionar quando adicionei o arquivo de roteamento 350 (editado para caminhos) do debian-administration.org/articles/140 - os domínios dos domínios virtuais não funcionam de jeito nenhum - você precisou adicionar algum arquivo de roteamento? Ta.
Darren Greaves
14

A maneira mais fácil é correr sudo tasksel install mail-server. Isso fornecerá um servidor de e-mail com padrões saudáveis. Tudo o que você precisa fazer é responder a algumas perguntas. Obviamente, você ainda poderá fazer configurações manuais posteriormente, se necessário, mas na maioria dos casos não será. Basta seguir as instruções na tela e você deve ficar bem.

Porém, é absolutamente recomendável ler sobre a administração de serviços de e-mail.

Referências oficiais:

Jo-Erlend Schinstad
fonte
Existe uma maneira preguiçosa de ver o que isso vai fazer (pacotes que serão instalados, configurações padrão) ?. Por preguiçoso, quero dizer, sem instalá-lo sozinho.
Javier Rivera
@Javier, você pode ver o conteúdo instalado executandosudo tasksel --task-packages mail-server
Marco Ceppi
Configuração armazenada no MySQL, sem anti-spam, sem antivírus ... não é realmente útil para nós :(.
Javier Rivera
4

Acabei de fazer isso pessoalmente, você realmente precisa do postfix e, no meu caso, também queria um servidor imap para poder usar um bom cliente de GUI (sem mencionar nomes) em outra máquina. Eu usei estes documentos:

Postfix

Pombal (imap e pop3)

Na verdade, é bem simples, instala-o em alguns minutos e estou recebendo e-mails. Isso também é útil para verificar se tudo está configurado corretamente .

Ah, e é claro que você precisará configurar suas entradas de DNS corretamente como abaixo (com base nas configurações que funcionaram para mim):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

e

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

Observe o ponto final no final dos servidores de email e insira seu endereço IP e nome de domínio, quando apropriado.

NimChimpsky
fonte