Iremos montar e configurar um servidor de email usando o Debian, mas poderia ser em qualquer outra distro.
Vamos ver abaixo o significado de alguns termos que referente a email:
- MUA(mail user agent) ou agente de usuário de e-mail: é responsável por exibir emails, mas para que um MUA possa exibir e-mail, você ainda precisa de um servidor imap ou pop. Por exemplo, quando você usa programas como thunderbird ou kmail para enviar um email está usando um MUA. Ao digitar um texto e clicar em “enviar” o MUA transmite o e-mail para o seu servidor de saída de email. Este servidor de saída tem um pequeno programa chamado sendmail. O sendmail procura pelo registro MX do email do destinatário(exemplo, joao@email.com). Você poderá usar o comando dig -t mx email.com para buscar por registro MX se quiser fazer testes. Voltando ao sendmail, ele usa o endereço IP que obtém e, usando o protocolo IP, envia o seu email para joao@email.com para lá. MUAs bem conhecidos incluem kmail e thunderbird.
- MTA: é responsável por enviar e receber email. Continuando com o passo acima do MUA, onde o sendmail usa o endereço ip de email.com para enviar o email para lá, o MTA(message transfer agent ou agente de transferência de mensagens) de email.com entra em ação ao ser entrado em contato. O MTA é um servidor que “fala a língua” do SMTP(simple mail transfer protocol). Como sabemos, o MTA pode receber e enviar e-mails. MTAs conhecidos são postfix e sendmail (ambos usam o comando sendmail para enviar e-mail).
- imap: O Internet Message Access Protocol, também conhecido como IMAP, é um protocolo para receber e-mails de um servidor. Ele não baixa o e-mail inteiro até que o destinatário o abra pelo thunderbird, microsoft outlook… imap e pop podem ser feitos por courier e cyrus. Aqui usaremos courier como servidor imap.
- pop(Post Office Protocol ): serve para enviar baixar emails. Ao onctrário do IMAP, o POP baixa a mensagem inteira para o seu computador. imap e pop podem ser feitos por courier e cyrus.
- smtp(Simple Mail Transfer Protocol): é um protocolo para envio de mensagems(emails). Ele envia o e-mail de um cliente local para o servidor remoto e eventualmente para o servidor de e-mail do destinatário.
- registro MX: mx vem de mail exchanger(trocador de email). Ele especifica o servidor de e-mail responsável por aceitar mensagens de e-mail em nome de um nome de domínio, como exemplo de nome de domínio temos email.com .
- sendmail: Sendmail é um aplicativo de servidor que oferece às empresas uma maneira de enviar e-mail usando o Simple Mail Transfer Protocol (SMTP).
Configure seu MTA
Usaremos o postfix para o serviço de MTA. Usaremos sua configuração padrão, portanto, cada usuário do sistema operacional receberá um endereço de e-mail no formato nome de usuário@domínio.
#1 Instale o postfix
Debian, Ubuntu e derivados: apt install postfix
maria@debian11VM:~$ sudo apt install postfix -y
Red Hat, CentOS, Oracle Linux, Rocky Linux…
dnf install postfix
SUSE ou OpenSUSE
yast -i postfix
#2 Inicie o postfix com: systemctl start postfix
maria@debian11VM:~$ sudo systemctl start postfix
#3 Descubra o seu nome de host(hostname). O servidor só aceitará e-mails para endereços @hostname: grep “myhostname =” /etc/postfix/main.cf
maria@debian11VM:~$ grep "myhostname =" /etc/postfix/main.cf myhostname = debian11VM.lab.local
Em meu caso, o hostname é debian11VM.lab.local. O usuário sendo usado aqui é maria, então, se quero enviar um email para maria envio para maria@debian11VM.lab.local
#4 Como teste, envie um e-mail de maria para maria:
maria@debian11VM:~$ echo "Email de teste para maria" | sudo sendmail -t maria@localhost
localhost é a mesma coisa que 127.0.01, ou 0.0.0.0 ou inda ::1 todos direcionam para seu próprio pc.
#5 veja o email recebido
maria@debian11VM:~$ cat /var/mail/maria From root@debian11VM.lab.local Fri Dec 23 10:53:53 2022 Return-Path: <root@debian11VM.lab.local> X-Original-To: maria@localhost Delivered-To: maria@localhost Received: by debian11VM.lab.local (Postfix, from userid 0) id 9BAC0A02BB; Fri, 23 Dec 2022 10:53:53 -0300 (-03) Message-Id: <20221223135353.9BAC0A02BB@debian11VM.lab.local> Date: Fri, 23 Dec 2022 10:53:53 -0300 (-03) From: root <root@debian11VM.lab.local> Email de teste para maria
Um outro caminho para ver os email é me /var/spool/mail/maria
#5 Acima vimos que o email chegou. Mas, e se não tivesse chegado? Podemos usar o comando mailq para ver a fila de email
maria@debian11VM:~$ mailq Mail queue is empty
No meu caso a fila está vazia. Não tem email pendente: Mail queue is empty
E Se o Email não Foi Enviado?
VEJA SE O POSTFIX ESTÁ INICIADO
Uma das causas do email estar na fila e não ter sido enviado é o postfix pode estar desligado. Verifique com o comando systemctl status postfix. Para ativar ele execute systemctl start postfix
No meu caso está ativo(active):
maria@debian11VM:~$ sudo systemctl status postfix ? postfix.service - Postfix Mail Transport Agent Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2022-12-20 13:17:26 -03; 2 days ago Process: 19482 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 19482 (code=exited, status=0/SUCCESS) CPU: 1ms dez 20 13:17:26 debian11VM systemd[1]: Starting Postfix Mail Transport Agent... dez 20 13:17:26 debian11VM systemd[1]: Finished Postfix Mail Transport Agent.
VERIFIQUE SE A PORTA 25 ESTÁ ABERTA COM NMAP
maria@debian11VM:~$ nmap localhost PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp
Vemos que está tudo ok. Se não estiver então libere a porta no o firewall
FIREWALL BLOQUEANDO A PORTA SMTP
A porta smtp do postfix é a 25. Mas é bom conferir se realmente ele está sendo escutado nessa porta mesma:
maria@debian11VM:~$ grep smtp /etc/services smtp 25/tcp mail
Libere no firewall essa porta com um dos seguintes comandos; veja exemplos com ufw e firewalld e iptables
ufw allow 25/tcp
ou
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
ou
firewall-cmd --add-port=25/tcp --permanent
Configurar Maildirs no postifix
Queremos usar Maildirs como caixas de correio especiais. Isso ocorre porque o correio só pode lidar com isso. Então, altere /etc/postfix/main.cf,
Abra /etc/postfix/main.cf com o vim
maria@debian11VM:~$ sudo vim /etc/postfix/main.cf
Remova o comentário # da linha abaixo. Se a linha não existir digite-a
#home_mailbox = Maildir/ ficando assim
home_mailbox = Maildir/
Reinicie o postfix
maria@debian11VM:~$ suo systemctl restart postfix
Agora a caixa de entrada estará em /home/maria/Maildir/new e não mais dentro de /var/mail
Enviei emails
maria@debian11VM:~$ echo "Email 01" | sudo sendmail -t maria@localhost maria@debian11VM:~$ echo "Email 02" | sudo sendmail -t maria@localhost maria@debian11VM:~$ echo "Email 03" | sudo sendmail -t maria@localhost
confira que para cada mensagem recebida um arquivo é criado
maria@debian11VM:~$ ls -l /home/maria/Maildir/new/ total 12 -rw------- 1 maria maria 369 dez 23 11:32 1671805952.V801I5fc77M750167.debian11VM -rw------- 1 maria maria 369 dez 23 11:32 1671805954.V801I5fc7aM999109.debian11VM -rw------- 1 maria maria 369 dez 23 11:32 1671805957.V801I5fc7bM527224.debian11VM
Configurar a variável mydestination
A variável mydestination(meu destino) deixa criarmos diversos “endereços” que podemos usar para receber email.
Veja:
maria@debian11VM:~$ grep mydestination /etc/postfix/main.cf mydestination = $myhostname, debian11VM.lab.local, localhost.lab.local, , localhost
Se alguém enviar email para maria@debian11VM.lab.local maria irá receber email da mesma forma que se alguém enviasse para maria@localhost
Vamos adicionar o endereço outraemail
#1 abra o arquivo /etc/postfix/mainconf e adicione outroemail à variável mydestination
maria@debian11VM:~$ sudo vim /etc/postfix/main.cf
mydestination = $myhostname, debian11VM.lab.local, localhost.lab.local, , localhost, outroemail
Esse endereço tem que pingar ao usarmos ping outroemail. No linux, podemos usar o /etc/hosts para criar um apontamento de outroemail para o ip do servidor que é 192.168.50.2, de forma que o ping seja respondido
maria@debian11VM:~$ sudo vim /etc/hosts
Ficou assim
127.0.0.1 localhost 127.0.1.1 debian11VM.lab.local debian11VM 192.168.50.2 debian11VM.lab.local debian11VM outroemail
Enviei um email para maria@outromail
maria@debian11VM:~$ echo "Email para maria@outroemail" | sudo sendmail -t maria@outroemail
Veja o conteúdo do email recebido
maria@debian11VM:~$ cat ~/Maildir/new/1671807285.V801I5fc7cM921987.debian11VM Return-Path: <root@debian11VM.lab.local> X-Original-To: maria@outroemail Delivered-To: maria@outroemail Received: by debian11VM.lab.local (Postfix, from userid 0) id AC4019FCE8; Fri, 23 Dec 2022 11:54:45 -0300 (-03) Message-Id: <20221223145445.AC4019FCE8@debian11VM.lab.local> Date: Fri, 23 Dec 2022 11:54:45 -0300 (-03) From: root <root@debian11VM.lab.local> Email para maria@outroemail
Alias – apelidos de e-mail
Podemos criar apelidos para uma conta; por exemplo, podemos fazer com que maria receba email não só através de maria@debian11VM.lab.local mas também por meio de maria2@debian11VM.lab.local ou meuoutroemail@debian11VM.lab.local
#1 edite /etc/aliases para ler como:
maria@debian11VM:~$ sudo vim /etc/aliases
# See man 5 aliases for format postmaster: root maria2: maria meuoutroemail: maria
#2 veja se os apelidos estão inclusos
maria@debian11VM:~$ strings /etc/aliases.db root postmaster debian11VM.lab.local YP_MASTER_NAME 1671488356 YP_LAST_MODIFIED
Podemos ver que não estão.
Execute newaliases para incluir
maria@debian11VM:~$ sudo newaliases
Veja novamente
maria@debian11VM:~$ strings /etc/aliases.db root postmaster maria meuoutroemail maria maria2 debian11VM.lab.local YP_MASTER_NAME 1671810621 YP_LAST_MODIFIED
#3 Faça um teste
maria@debian11VM:~$ echo "email para o apelido maria2" | sudo sendmail -t maria2@debian11VM.lab.local
Veja o conteúdo do email recebido
maria@debian11VM:~$ cat ~/Maildir/new/1671810675.V801I5fc7eM878672.debian11VM Return-Path: <root@debian11VM.lab.local> X-Original-To: maria@localhost Delivered-To: maria@localhost Received: by debian11VM.lab.local (Postfix, from userid 0) id A6AAE9FDD6; Fri, 23 Dec 2022 12:51:15 -0300 (-03) Message-Id: <20221223155115.A6AAE9FDD6@debian11VM.lab.local> Date: Fri, 23 Dec 2022 12:51:15 -0300 (-03) From: root <root@debian11VM.lab.local> email para o apelido maria2
Fontes: linuxintro