MediaWiki

From absortowiki

MediaWiki

MediaWiki Logo a partir de 2020
Mediawiki logo até 2020

Configurando o envio de emails em sua wiki

É muito importante que sua wiki possa enviar e-mails corretamente, esse tipo de mensagens é utilizado para muitas funcionalidades importantes como o envio de senhas para novos usuários, a recuperação de senhas, notificações, entre outros.

Configurando o cliente de SMTP

Ao invés de instalar um servidor de e-mails dedicado na mesma máquina, o que demandaria uma série de configurações e aumentaria muito a complexidade de toda a instância de MediaWiki instalada, muitas vezes é preferível utilizar um serviço externo para o envio de e-mails. Resta então apenas a configuração de um cliente de SMTP que irá se conectar com o servidor encarregado de fazer de fato o envio das mensagens.

Como cliente de SMTP, utilizo o msmtp, um cliente muito leve e simples. Para instalar o msmtp em distribuições Debian Linux e suas derivadas, basta utilizar o comando apt install msmtp. Também é importante verificar que o pacote mailutils está devidamente instalado.

Vamos substituir o sendmail como cliente padrão do sistema pelo msmtp, para isso precisamos garantir que não vai haver conflito entre os clientes. Para isso verificamos os pacotes instalados na máquina e removemos os que não iremos utilizar:

$ dpkg -l | grep exim # para checar os pacotes instalados
$ apt remove exim4-daemon-light # remove o exim4, caso tenha sido encontrado no comando interior
$ ln -s /usr/bin/msmtp /usr/sbin/sendmail # cria um atalho para o msmtp sobrepondo o caminho para o sendmail

Agora é preciso criar um arquivo de configuração para o msmtp. A menos que você vá utilizar mais de uma conta de envio para e-mails, sugiro utilizar a configuração global do msmtp que fica localizada em /etc/msmtprc. A configuração vai depender dos dados do seu servidor, mas um modelo inicial seria mais ou menos assim:

defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp

account nomedaconta
host smtp.provedor.net
port 465
from endereco@provedor.net
user endereco@provedor.net
password YOUR_SECRET_PASS
tls_starttls off

account default : nomedaconta
Testando as Configurações

Tendo finalizado as configurações podemos fazer alguns tipos de testes para verificar que o servidor está pronto para enviar mensagens. Primeiro testamos a capacidade do comando mail de ler as configurações e enviar e-mails. Depois testamos se o link simbólico para o msmtp está substituíndo o sendmail corretamente. Então testamos se o envio pelo msmtp diretamente está funcionando, e, por último testamos enviar utilizando o módulo mail do PHP, que será utilizado pela MediaWiki. Claro, é preciso substituir nesses comandos o endereço teste@email.net por um e-mail existente e que você possa verificar o recebimento facilmente e executar um teste de cada vez.

$ echo "testing" | mail -s "mail test" teste@email.net
$ echo "Subject: sendmail test" | sendmail -v "teste@email.net"
$ echo "Subject: sendmail test" | msmtp -t "teste@email.net".
$ echo '<?php mail("teste@email.net","php test","testing");' | php

Se o envio de e-mails falhar em todas essas etapas seu provedor pode estar bloqueando a saída das portas de SMTP. Isso é uma prática padrão em muitos provedores e é necessário solicitar o desbloqueio para conseguir realizar o envio.

Configurando a MediaWiki para o envio de emails

Configurar o servidor ainda não é o suficiente para que a MediaWiki consiga enviar e-mails corretamente. O detalhe faltante é setar algumas variáveis essenciais para a manipulação das mensagens. As variáveis $wgEmergencyContact e $wgPasswordSender precisam ter seus valores alterados para corresponder com seu endereço de envio, seguindo com os valores do exemplo de configuração do msmtp, essas variáveis seriam setadas no seu LocalSettings.php com o valor endereco@provedor.net.

Lidando com Spam

Reveja as permissões de sua wiki

O primeiro passo é rever as permissões da sua wiki, por padrão wikis são abertas à colaboração o que é uma coisa ótima mas que demanda estar revisando edições, criação de usuárias, novas páginas, etc. Caso você esteja sofrendo com a ação de spammers, talvez seja melhor bloquear a criação de novas contas e a edição de páginas até que consiga avaliar melhor a situação. Para fazer isso basta adicionar as seguintes linhas no seu LocalSettings.php

# usuárias anônimas e usuárias não admin não devem poder editar ou criar páginas
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['sysop']['edit'] = true;

# usuárias anônimas não devem poder criar contas
$wgGroupPermissions['*']['createaccount'] = false;

O primeiro bloco de código altera as permissões impedindo qualquer pessoa que não faça parte do grupo sysops de editar (e criar) páginas.

O segundo bloco impede que usuários anônimos criam novas contas.

Remova as páginas de Spam criadas

Instale a extensão Nuke e remova todas as páginas criadas pelos spammers.

Exclua os usuários

Geralmente os spammers criam centenas de usuários, a maneira mais simples para removê-los é diretamente no banco de dados. É possível que a campanha dos spammers crie os usuários todos em sequência, permitindo que se excluam todos os usuários que tenha user_id maior que certo número. No caso de uma wiki de um usuário apenas, por exemplo, basta excluir usuários que tenham user_id maior que 1:

DELETE FROM prefix_user WHERE user_id > 1;

Leia mais