Rss

  • youtube
  • linkedin
  • google

Servidor de Email – Parte 2 – MariaDB

Esta é a segunda parte do processo de criação do servidor de Email em um CentOS 8. Se chegou aqui por acaso, melhor ler primeiro a publicação anterior sobre a Instalação dos Pacotes

Porque usar MariaDB/MySQL?

Antes de tudo devo deixar claro que prefiro usar o PostgreSQL em detrimento do MariaDB/MySQL por muitas razões, porém, há uma que pesa muito contra o uso do PostgreSQL em um servidor unificado com WordPress e serviços de E-mail que é o simples fato de que o WP não possui suporte nativo ao PostgreSQL. Você pode ter mais informações sobre esse assunto na documentação oficial do WordPress neste link. Como estou me baseando em experiências pessoais para escrever este documento e também para pequenos serviços, estou usando o que há de mais comum e mais acessível. Caso o uso de PostgreSQL seja do seu interesse, você pode consultar este documento mais tarde onde mostrarei como migrar do MariaDB para o PostgreSQL.

Configurando MariaDB/MySQL

Supondo que você esteja seguindo os passos deste manual, você estará com uma instalação do MariaDB ainda não configurada. Caso já tenha uma instalação funcional, pode pular para o próximo passo.

Inicialmente eu bloqueio todo e qualquer acesso ao Banco de Dados de origem externa. Somente a partir de conexões criadas de dentro do próprio servidor é que elas podem ser feitas por medida de segurança. Para isso abrimos o arquivo /etc/my.cnf.d/server.cnf e adicionamos as linhas abaixo logo após a entrada [mysqld] existente.

[mysqld]
# Diretorio para o arquivo errmsg.sys no idioma que você desejar usar 
language=/usr/share/mysql/portuguese
# Ativa o logging por default para ajudar a encontrar problemas
general-log
# Indica que o log será enviado para uma tabela ao invés de ser escrito em um arquivo. Útil para quem não quer ficar conectando no servidor para analisar os logs. Você poderá utilizar o PHPMyAdmin para fazer as consultas
log_output=TABLE
# Habilita o relatório de consultas lentas
slow_query_log
# Tempo mínimo para considerar uma consulta lenta (em segundos)
long_query_time=5.0
# Indica para desativar o mecanismo de rede e somente aceitar conexões através do arquivo de socket local
skip-networking
bind-address = 127.0.0.1

Se a intenção for permitir conexões remotas ao MariaDB, será necessário executar os comandos abaixo para permitir conexões remotas.

$ firewall-cmd --add-port=3306/tcp 
$ firewall-cmd --permanent --add-port=3306/tcp

Reinicie o serviço para que as alterações sejam efetivadas

$ sudo systemctl stop mysqld && sudo systemctl start mysqld

Criando usuário para o Postfix e as tabelas necessárias

Para que possamos utilizar o Postfix com o MariaDB teremos que criar um usuário para acesso e a partir dele as tabelas necessárias para gerenciar os domínios e contas virtuais.

Primeiro vamos criar o banco de dados.

NOTA: Se não foi feito nenhuma alteração na instalação do MariaDB você pode conectar sem o uso de senha para o usuário ‘root’@’localhost’, do contrário, utilize a opção -p para que seja requisitado digitar a senha.

$ mysql -u root

Em seguida vamos criar o usuário e as tabelas. Vou utilizar mypostfixdb como nome para a base de dados e mypostfixdbuser para o nome de usuário. Altere as informações de acordo com o que deseja, principalmente mypostfixdbuser_password. Essas informações serão utilizadas na etapa de configuração dos arquivos do Postfix que utilizarão as tabelas criadas.

MariaDB> CREATE DATABASE mypostfixdb;
MariaDB> GRANT SELECT, INSERT, UPDATE, DELETE ON mypostfixdb.* TO 'mypostfixdbuser'@'localhost' IDENTIFIED BY 'mypostfixdbuser_password';
MariaDB> GRANT SELECT, INSERT, UPDATE, DELETE ON mypostfixdb.* TO 'mypostfixdbuser'@'localhost.localdomain' IDENTIFIED BY 'mypostfixdbuser_password';
MariaDB> FLUSH PRIVILEGES;
MariaDB> USE mypostfixdb;
MariaDB> CREATE TABLE virtual_domains (id int(11) NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MariaDB> CREATE TABLE virtual_users(id int(11) NOT NULL AUTO_INCREMENT, vdomain_id int(11) NOT NULL, password VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, PRIMARY KEY (id), UNIQUE KEY email(email), FOREIGN KEY (vdomain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MariaDB> CREATE TABLE virtual_aliases (id int(11) NOT NULL AUTO_INCREMENT, vdomain_id int(11) NOT NULL, source VARCHAR(100) NOT NULL, PRIMARY KEY (id),FOREIGN KEY (vdomain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Essas tabelas irão armazenar as contas e os domínios virtuais e serão acessadas pelo Dovecot (de acordo com a proposta desse tutorial).
E isso é tudo.

Agora estamos prontos para configurar o Dovecot.

Comments (3)

  1. [;] Com tudo instalado podemos iniciar as configurações. Comecemos pelo MariaDB. [;]

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.