Android

Instale e configure o postfix e o dovecot

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

Índice:

Anonim

Esta é a segunda publicação de nossa série Instalando e configurando um servidor de correio. Neste post, mostraremos como instalar e configurar o Postfix e o Dovecot, os dois principais componentes do nosso sistema de correio.

O Postfix é um agente de transferência de email de código aberto (MTA), um serviço usado para enviar e receber emails. O Dovecot é um servidor IMAP / POP3 e, em nossa configuração, também gerencia a entrega local e a autenticação do usuário.

Este tutorial foi escrito para o Ubuntu 16.04, no entanto, as mesmas etapas com pequenas modificações devem funcionar em qualquer versão mais recente do Ubuntu.

Pré-requisitos

Antes de continuar com este tutorial, verifique se você está conectado como um usuário com privilégios sudo.

Instalar Postfix e Dovecot

Os pacotes Dovecot nos repositórios padrão do Ubuntu estão desatualizados. Para tirar proveito do módulo imap_sieve , instalaremos o Dovecot a partir do repositório da comunidade Dovecot.

Adicione a chave GPG do repositório ao seu chaveiro apt sources com o seguinte comando wget:

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

Ative o repositório da comunidade Dovecot usando o seguinte comando:

echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list

sudo apt update sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)" sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'" sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

Configuração do Postfix

Vamos configurar o Postfix para usar caixas de correio e domínios virtuais.

Comece criando os arquivos de configuração sql que instruirão o postfix sobre como acessar o banco de dados MySQL, criado na primeira parte desta série.

sudo mkdir -p /etc/postfix/sql

Abra seu editor de texto e crie os seguintes arquivos:

/etc/postfix/sql/mysql_virtual_domains_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1' /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Após a criação dos arquivos de configuração SQL, atualize o arquivo de configuração principal do postfix para incluir informações sobre os domínios virtuais, usuários e aliases armazenados no banco de dados MySQL.

sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" O comando postconf exibe os valores reais dos parâmetros de configuração, altera os valores dos parâmetros de configuração ou exibe outras informações de configuração sobre o sistema de correio Postfix.

O agente de entrega local entregará os emails recebidos nas caixas de correio dos usuários. Execute o seguinte comando para definir o serviço LMTP do Dovecot como um transporte de entrega de email padrão:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Defina os parâmetros TL usando o certificado SSL gerado anteriormente, Vamos criptografar:

sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may' sudo postconf -e 'smtp_tls_note_starttls_offer = yes' sudo postconf -e 'smtpd_tls_loglevel = 1' sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem' sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'

Defina as configurações SMTP autenticadas e entregue a autenticação ao Dovecot:

sudo postconf -e 'smtpd_sasl_type = dovecot' sudo postconf -e 'smtpd_sasl_path = private/auth' sudo postconf -e 'smtpd_sasl_local_domain =' sudo postconf -e 'smtpd_sasl_security_options = noanonymous' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'

Também precisamos editar o arquivo de configuração principal do Postfix master.cf e ativar a porta de envio ( 587 ) e a porta smtps ( 465 ).

Abra o arquivo com seu editor de texto e remova o comentário / edite as seguintes linhas:

/etc/postfix/master.cf

submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING

Reinicie o serviço postfix para que as alterações entrem em vigor.

sudo systemctl restart postfix

Neste ponto, você configurou com êxito o serviço Postfix.

Configurar Dovecot

Nesta seção, configuraremos o Dovecot para corresponder à nossa configuração. Certifique-se de editar as linhas destacadas em amarelo.

Comece configurando o arquivo dovecot-sql.conf.ext que instrui o Dovecot como acessar o banco de dados e como encontrar as informações sobre contas de email.

/etc/dovecot/dovecot-sql.conf.ext

driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'

Não esqueça de usar as credenciais corretas do MySQL (dbname, usuário e senha).

Em seguida, edite o arquivo conf.d/10-mail.conf e edite as seguintes variáveis:

/etc/dovecot/conf.d/10-mail.conf

… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…

Para fazer a autenticação funcionar, abra o conf.d/10-auth.conf , edite as seguintes linhas e inclua o arquivo auth-sql.conf.ext :

/etc/dovecot/conf.d/10-auth.conf

… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…

Abra o arquivo conf.d/10-master.conf e modifique-o da seguinte maneira:

/etc/dovecot/conf.d/10-master.conf

… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…

Abra o conf.d/10-ssl.conf e ative o SSL / TLS.

/etc/dovecot/conf.d/10-ssl.conf

… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.

Abra o arquivo conf.d/20-imap.conf e ative o plug-in imap_quota :

/etc/dovecot/conf.d/20-imap.conf

… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…

Abra o arquivo conf.d/20-lmtp.conf e edite-o da seguinte maneira:

/etc/dovecot/conf.d/20-lmtp.conf

… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…

Defina as caixas de correio padrão no arquivo conf.d/20-lmtp.conf :

/etc/dovecot/conf.d/15-mailboxes.conf

… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…

Existem dois tipos diferentes de tamanhos de cota, um definido para o domínio inteiro e o outro por caixa de correio do usuário. Na parte anterior desta série, já ativamos o suporte à cota no PostfixAdmin, o que significa que as informações da cota serão armazenadas no banco de dados PostfixAdmin.

Agora, precisamos configurar o Dovecot para conectar-se ao banco de dados, manipular limites de cota e executar um script que envie um email para o usuário quando a cota do usuário exceder um limite especificado. Para fazer isso, abra o arquivo conf.d/90-quota.conf e modifique-o da seguinte maneira:

/etc/dovecot/conf.d/90-quota.conf

plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }

Também precisamos informar ao dovecot como acessar o dicionário SQL de cota. Abra o arquivo dovecot-dict-sql.conf.ext e edite as seguintes linhas:

/etc/dovecot/dovecot-dict-sql.conf.ext

… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }… Certifique-se de usar as credenciais corretas do MySQL (dbname, usuário e senha).

Crie o seguinte script de shell que enviará um email ao usuário se sua cota exceder um limite especificado:

/usr/local/bin/quota-warning.sh

#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF

Torne o script executável executando o seguinte comando chmod :

sudo chmod +x /usr/local/bin/quota-warning.sh

Finalmente, reinicie o serviço dovecot para que as alterações entrem em vigor.

sudo systemctl restart dovecot

Conclusão

Até agora você deve ter um sistema de correio totalmente funcional. Na próxima parte desta série, mostraremos como instalar e integrar o Rspamd.

servidor de correio postfix dovecot

Esta postagem faz parte da série Instalando e configurando um servidor de correio.

Outras postagens nesta série:

• Configurar um servidor de correio com PostfixAdmin • Instalar e configurar o Postfix e o Dovecot • Instalar e integrar o Rspamd • Instalar e configurar o Roundcube Webmail