Como configurar o servidor de correio Postfix e Dovecot com o banco de dados (MARIADB) com segurança - Parte 1
- 2398
- 160
- Mr. Mitchell Hansen
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 -mailNosso 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?“:
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 concedidoPhpmyadmin 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 phpmyadminDe 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 phpmyadminDigite 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 dados12. 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 dadosQuando você escolhe Primário sob Índice para Domainid, Aceite os valores padrão e clique Ir:
Adicionar índice de banco de dadosComo 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 dados13. 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 MySQLAlias_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 dadosO 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.
- « Como usar o comando 'Next' com AWK no Linux - Parte 6
- Como ler a entrada AWK de Stdin em Linux - Parte 7 »