Como configurar o servidor de correio Postfix e Dovecot com o banco de dados (MARIADB) com segurança - Parte 1

Como configurar o servidor de correio Postfix e Dovecot com o banco de dados (MARIADB) com segurança - Parte 1
Configurar servidor de correio Postfix no CentOS 7

Nisso 3 article série, discutiremos como configurar um Postfix servidor de correio com proteção antivírus e spam em um CENTOS 7 caixa. Observe que essas instruções também funcionam em outras distribuições, como RHEL/Fedora e Debian/Ubuntu.

Parte 1: Como criar e configurar o banco de dados do servidor de correio Postfix (MARIADB) com segurança Parte 2: Como configurar o Postfix e Dovecot com usuários de domínio virtual no Linux Parte 3: Como adicionar proteção antivírus e spam ao servidor de correio postfix com clamav e spamassassin Parte 4: Como instalar e configurar o cliente do Webmail Roundcube com usuários virtuais no Postfix Parte 5: Como usar o sagator, um gateway antivírus/antispam para proteger seu servidor de e -mail

Nosso plano consiste em armazenar contas de e -mail e aliases em um Mariadb Banco de dados que é para nossa conveniência, será gerenciado phpmyadmin.

Se você optar por não instalar phpmyadmin, ou estão lidando com um servidor Cli-Only, também forneceremos o código equivalente para criar as tabelas de banco de dados que serão usadas ao longo desta série.

Como manter um servidor de correio em funcionamento é uma das tarefas essenciais que geralmente são atribuídas a administradores e engenheiros do sistema, também forneceremos algumas dicas para executar com eficiência esse serviço crítico em um ambiente de produção.

Crie registros A e MX para domínio no DNS

Antes de prosseguir, existem alguns pré -requisitos que devem ser atendidos:

1. Você precisará de um domínio válido registrado por meio de um registrador de domínio. Nesta série, usaremos www.LinuxNewz.com, que foi registrado através Vai Papai.

2. Esse domínio deve ser apontado para o IP externo do seu provedor de hospedagem VPS ou em nuvem. Se você estiver auto-hospedar seu servidor de correio, pode usar o serviço oferecido pela FreedNS (requer registro).

De qualquer forma, você tem que configurar A e Mx Registros para o seu domínio também (você pode aprender mais sobre os registros MX nesta FAQ do Google).

Uma vez adicionado, você pode procurá -los usando uma ferramenta online, como MxtoolBox ou Viewdns para garantir que eles sejam configurados corretamente.

Importante: Por favor, observe que pode demorar um pouco (1-2 dias) até que os registros do DNS sejam propagados e seu domínio esteja disponível. Enquanto isso, você pode acessar seu VPS através do endereço IP para executar as tarefas indicadas abaixo.

3. Configure o Fqdn (Nome de domínio totalmente qualificado) do seu VPS:

# hostnamectl set-hostname yourhostname 

Para definir o nome do host do sistema, então edite /etc/hosts como segue (substitua Aaa.BBB.CCC.DDD, Seu nome, e seu domínio com o IP público do seu servidor, seu nome de host e seu domínio registrado):

Aaa.BBB.CCC.DDD YourHostName.seu domínio.com o seu nome 

onde Seu nome é o nome do host do sistema que foi definido anteriormente usando hostnamectl comando.

Instalando os pacotes de software necessários

4. Para instalar pacotes de software necessários como Apache, Postfix, Dovecot, Mariadb, Phpmyadmin, Spamasssassin, Clamav, etc., você precisa ativar o EPEL repositório:

# Yum Instale o lançamento de Epel 

5. Depois de seguir as etapas acima, instale os pacotes necessários:

Em sistemas baseados no CentOS:

# yum update && yum install httpd httpd-devel postfix Dovecot Dovecot-mysql spamasssassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav update mariadb mariadb-server phpmyadminMin 

Em Debian e Derivativos:

# Aptitude Update && Aptidão Instale o apache2 Postfix Dovecot-core Dovecot-aMapd Dovecot-Pop3d Dovecot-lmtpd Dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpmy 

6. Inicie e habilite os servidores da Web e do banco de dados:

Em sistemas baseados no CentOS:

# SystemCtl Ativar httpd mariadb # SystemCtl Iniciar httpd mariadb 

Em Debian e Derivativos:

# SystemCtl Ativar Apache2 MARIADB # SystemCtl Iniciar Apache2 Mariadb 

Quando a instalação estiver concluída e o serviço acima estiver ativado e em execução, começaremos a configurar o banco de dados e as tabelas para armazenar informações sobre contas de correio postfix.

Criando banco de dados de contas de correio postfix

Por simplicidade, vamos usar phpmyadmin, uma ferramenta destinada a lidar com a administração de Mysql / Mariadb bancos de dados através de uma interface da web, para criar e gerenciar o banco de dados de email.

No entanto, para fazer logon e usar esta ferramenta, precisamos seguir estas etapas:

7. Ative o Mariadb conta (você pode fazer isso executando o mysql_secure_installation Utilitário da linha de comando, atribuindo uma senha para a raiz do usuário e definindo as configurações padrão propostas pela ferramenta, exceto “Proibir o login de raiz remotamente?“:

Desative o Login de raiz do MySQL

Ou, de outra forma, crie um novo usuário de banco de dados:

Mariadb [(nenhum)]> crie o usuário 'dba'@'localhost' identificado por 'yourpasswordhere'; Mariadb [(nenhum)]> conceda todos os privilégios * . * Para 'dba'@'localhost'; Mariadb [(nenhum)]> Privilégios de descarga; 
Crie um novo usuário de banco de dados

Prenda o Apache com um certificado

8. Como usaremos um aplicativo da Web para gerenciar o banco de dados do servidor de email, precisamos tomar as precauções necessárias para proteger as conexões com o servidor. Caso contrário, nosso phpmyadmin Credenciais viajarão em texto simples sobre o fio.

Para configurar Segurança da camada de transporte (TLS) em seu servidor, siga as etapas descritas em Parte 8 da série RHCE: Implementando HTTPs através do TLS usando o NSS (Network Security Service) para Apache antes de prosseguir.

Observação: Se você não tiver acesso ao console do servidor, precisará encontrar outra maneira de gerar a entropia necessária durante a criação de chaves. Nesse caso, você pode considerar instalar RNG-Tools e correndo rngd -r /dev /urandom.

Configurar e seguro phpmyadmin

9. Em /etc/httpd/conf.d/phpmyadmin.conf (CENTOS) ou /etc/phpmyadmin/apache.conf (Debian e derivados), localize todas as ocorrências das seguintes linhas e verifique se elas apontam para o IP público do seu servidor:

Requer ip aaa.BBB.CCC.DDD permite da AAA.BBB.CCC.DDD 

Além disso, desative os aliases padrão e crie um novo para acessar sua página de login phpmyadmin. Isso ajudará a proteger o site contra bots e atacantes externos que visam www.seu domínio.com/phpmyadmin ou www.seu domínio.com/phpmyadmin.

#Alias ​​/phpmyadmin /usr /share /phpmyadmin #alias /phpmyadmin /usr /share /phpmyadmin alias /gerenciado /usr /share /phpmyadmin 

Além disso, adicione a seguinte linha dentro :

Exigir tudo concedido 
Phpmyadmin seguro

Crie o Apache VirtualHost para o domínio

10. Verifique se o seu domínio é adicionado aos sites ativados. Criar /etc/httpd/sites-available/linuxnewz.com.conf (CENTOS) ou /etc/apache2/sites-averable/linuxnewz.com (Debian) com o seguinte conteúdo (verifique se o Documentroot, Sites disponíveis, e sites habilitados existem diretórios):

 ServerName www.LinuxNewz.com Serveralias linuxNewz.com documentroot/var/www/linuxnewz.com/public_html errorlog/var/www/linuxnewz.com/erro.Log CustomLog/var/www/linuxnewz.com/solicitações.Índices de Opções Combinadas de Log FollowSymLinks  

e o link simbólico:

No CentOS:
# ln -s/etc/httpd/sites -available/linuxnewz.com.conf/etc/httpd/sites-inabled/linuxnewz.com.conf 
No Debian:
# a2ensite linuxnewz.com 

E você terminou.

Configurar banco de dados de e -mail postfix

11. Agora você pode abrir seu phpmyadmin interface em https: // www.seu domínio.com/gerenciado (Observe que gerenciado é o alias que configuramos anteriormente para o diretório de dados phpmyadmin).

Se isso não funcionar (o que pode ser causado por um atraso na propagação ou falta de configuração dos registros DNS) por enquanto, você pode tentar usar o endereço IP público do servidor em vez de www.seu domínio.com:

Login phpmyadmin

De qualquer forma, depois de fazer logon no phpmyadmin, você verá a seguinte interface. Clique Novo Na seção esquerda:

Crie um novo banco de dados em phpmyadmin

Digite um nome para o banco de dados (EmailServer_DB Nesse caso, não há necessidade de selecionar um agrupamento) e clicar Criar:

Digite o nome do banco de dados

12. Na próxima tela, escolha um nome Para a primeira tabela (onde armazenaremos os domínios que este servidor de email gerenciará.

Observe que, mesmo quando nesta série, gerenciaremos apenas um domínio, você pode adicionar mais tarde) e o número de campos que você deseja, depois clique em Ir. Você será solicitado a nomear e configurar esses dois campos, onde poderá prosseguir com segurança, conforme indicado nas seguintes imagens:

Crie tabela de banco de dados

Quando você escolhe Primário sob Índice para Domainid, Aceite os valores padrão e clique Ir:

Adicionar índice de banco de dados

Como alternativa, você pode clicar Visualizar SQL Para ver o código sob o capô:

Crie a tabela 'emailServer_db'.'Domains_tbl' ('domainid' int não nulo auto_increment, 'domainname' varchar (50) não nulo, chave primária ('domainid')) mecanismo = innodb; 
Código de índice de tabela de banco de dados

Quando você estiver pronto, clique Salvar para confirmar mudanças. Você será capaz de clicar Novo sob EmailServer_DB Para continuar criando tabelas:

Crie tabelas no banco de dados

13. Agora siga estas etapas para criar o resto das mesas. Clique no SQL guia e insira o código indicado para cada objeto de banco de dados.

Observe que, nesse caso, escolhemos criar a tabela usando uma consulta SQL por causa dos relacionamentos que devem ser estabelecidos entre diferentes tabelas:

Usuários_tbl

Crie a tabela 'usuários_tbl' ('userId' int não null auto_increme, 'domainid' int não nulo, 'senha' varchar (100) não nulo, 'email' varchar (100) não nulo, chave primária ('userID'), exclusivo Chave 'email' ('email'), chave estrangeira (domainid) referências domains_tbl (domainid) no excluir cascata) mecanismo = innodb; 
Crie tabela de usuário postfix

Você deve receber uma mensagem de confirmação (se não, o phpmyadmin solicitará erros de sintaxe):

Confirmação do MySQL

Alias_tbl

Crie a tabela 'Alias_tbl' ('Aliasid' int não nulo Auto_increme, 'domainid' int não nulo, 'fonte' varchar (100) não nulo, 'destino' varchar (100) não nulo, chave primária ('Aliasid'), estrangeiro Key (domainId) referências domains_tbl (domainid) em excluir cascata) motor = innodb; 

(Clique Ir na parte inferior para prosseguir com a criação da mesa).

Até este ponto, você deve ter a seguinte estrutura de banco de dados:

Estrutura do banco de dados

O que significa que você está pronto para começar a adicionar alguns registros na próxima seção.

Criando um domínio postfix, usuários e aliases

14. Vamos agora inserir os seguintes registros nas três tabelas. As senhas para [Email protegido] e [Email protegido] será criptografado e o Insira em usuários_tbl declaração.

Além disso, observe que os e -mails enviados para [Email protegido] será redirecionado para [Email protegido]:

Inserir em domains_tbl (domainname) valores ('linuxnewz.com '); Inserir em users_tbl (domainid, senha, email) valores (1, Encrypt ('senhaforFirStemAlaccount', concat ('$ 6 $', substring (sha (rand ()), -16))), '[email protegido]'); Inserir em users_tbl (domainid, senha, email) valores (1, Encrypt ('PasswordForSeCondemailAccount', concat ('$ 6 $', substring (sha (rand ()), -16))), '[email protegido]'); Inserir em alias_tbl (domainid, origem, destino) valores (1, '[email protegido]', '[email protegido]'); 

Depois de adicionar nosso domínio, duas contas de usuário e um alias de email, estamos prontos para continuar configurando nosso servidor de e -mail no próximo artigo desta série, onde vamos configurar Dovecot e Postfix.

Resumo

Neste artigo, listamos os pacotes necessários para instalar um servidor de e -mail postfix em um VPS do CentOS 7 e explicamos como gerenciar o banco de dados subjacente usando PhpMyadmin.

Nos próximos dois artigos, revisaremos a configuração dos dois programas que cuidarão da distribuição de email para o nosso domínio (Parte 2) e mostrar como adicionar proteção contra spam e vírus (Parte 3) para o seu servidor.

Até então, não hesite em entrar em contato conosco usando o formulário abaixo se tiver alguma dúvida ou comentário.