Existem diversas formas de utilizar um servidor de Mailing, as principais são:

  • Como um sistema de grupos (como o Google Groups): Onde o usuário utiliza sua ferramenta de e-mail atual e dela envia e-mail para um grupo, onde todos do grupo podem responder diretamente ou após a aprovação da mensagem por um moderador. Abordaremos em outro post, você pode ler sobre essa outra opção aqui ou nas referências abaixo.
  • Como um sistema de campanhas: Onde o usuário entra em uma ferramenta WEB, cria ou grupo ou utiliza um existente para enviar uma campanha e por esta ferramenta acompanha qual foi a efetividade desta campanha (quantos receberam, quantos leram). Aqui iremos abordar esse modelo de Mailing, com um servidor Linux CentOS e o PHPList.

Lembre-se que será necessário ter cadastrado o nome DNS (e MX) desse sistema (altere todas as partes em cinza conforme sua necessidade). Para instalar esse servidor, você vai precisar:

  • Instalar o servidor CentOS padrão: Caso tenha dúvidas consulte aqui ou no link disponibilizado nas referências.
  • Instalar o servidor Apache: Caso tenha dúvidas consulte aqui ou no link disponibilizado nas referências.
    • Caso queira configurar o site como HTTPS (consulte aqui, ou nas referências abaixo).
  • Instalar o servidor MariaDB (Nesse post iremos instalar o banco junto à aplicação, mas você pode preferir instalar e criar o banco em um servidor separado). Caso tenha dúvidas consulte como instalar o MariaDB.

Para instalar o repositório do Fedora, execute:

echo "[fedora-source]" > /etc/yum.repos.d/Fedora-Source.repo
echo "name=Fedora - Base Sources" >> /etc/yum.repos.d/Fedora-Source.repo
echo "baseurl=http://dl.fedoraproject.org/pub/epel/$releasever/x86_64/" >> /etc/yum.repos.d/Fedora-Source.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/Fedora-Source.repo
echo "enabled=0" >> /etc/yum.repos.d/Fedora-Source.repo

Com o servidor Apache instalado, execute os seguintes comandos:

yum install php php-apc php-common php-curl php-dom php-gd php-intl php-ldap php-mbstring php-mysql php-odbc php-pear php-snmp php-soap php-xml php-xmlrpc -y
yum install php-imap php-pecl-zendopcache php-mssql --enablerepo=fedora-source -y

systemctl enable httpd

mkdir -p /var/www/html/phplist
sed -i "s/DocumentRoot \"\/var\/www\/html\"/DocumentRoot \"\/var\/www\/html\/phplist\"/g" /etc/httpd/conf/httpd.conf
sed -i "s/Listen 80/Listen 80\nKeepAlive On\nMaxKeepAliveRequests 30\nKeepAliveTimeout 2/g" /etc/httpd/conf/httpd.conf
sed -i "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf

echo "ServerSignature off" >> /etc/httpd/conf/httpd.conf
echo "Timeout 60s" >> /etc/httpd/conf/httpd.conf
echo "LimitRequestFields 20" >> /etc/httpd/conf/httpd.conf 

sed -i "s/max_execution_time = 30/max_execution_time = 600/g" /etc/php.ini
sed -i "s/max_input_time = 60/max_input_time = 600/g" /etc/php.ini
sed -i "s/default_socket_timeout = 60/default_socket_timeout = 300/g" /etc/php.ini
sed -i "s/mysql.connect_timeout = 60/mysql.connect_timeout = 300/g" /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = America\/Sao_Paulo/g" /etc/php.ini
sed -i "s/allow_url_include = Off/allow_url_include = On/g" /etc/php.ini
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 200M/g" /etc/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 200M/g" /etc/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 512M/g" /etc/php.ini

sed -i "s/;opcache.revalidate_freq=2/opcache.revalidate_freq = 60/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.use_cwd=1/opcache.use_cwd=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.validate_timestamps=1/opcache.validate_timestamps=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.save_comments=1/opcache.save_comments=1/g" /etc/php.d/opcache.ini
sed -i "s/;opcache.enable_file_override=0/opcache.enable_file_override=0/g" /etc/php.d/opcache.ini

service httpd restart

Com o banco de dados MariaDB instalado, para criar o banco execute:

mysql -u root -p

Será solicitado a senha do root (definida anteriormente) informe-a, sem seguida (dentro do MariaDB) crie o banco defina o usuário e senha com acesso a este banco (em cinza a senha,altere-a para o padrão de sua empresa): 

create database phplistdb;
grant all privileges on phplistdb.* to 'phplist'@'localhost' identified by 'secretpassword';
flush privileges;
quit

Para instalar e configurar o envio de E-mail, com o Postfix e o Dovecot, execute os comandos:

yum install postfix dovecot -y
vim /etc/dovecot/dovecot.conf

Aperte a tecla INSERT do teclado para entrar em modo de edição e deixa-lo da seguinte forma:

protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir
pop3_uidl_format = %08Xu%08Xv
login_process_size = 64

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

systemctl enable dovecot
systemctl start dovecot
cp -R /etc/postfix/main.cf /etc/postfix/main.cf.bkp
sed -i "s/inet_interfaces = localhost/inet_interfaces = all/g" /etc/postfix/main.cf
echo "# CONFIGURACAO PERSONALIZADA" >> /etc/postfix/main.cf
echo "" >> /etc/postfix/main.cf
echo "myhostname = `hostname | tr 'A-Z' 'a-z'`" >> /etc/postfix/main.cf
echo "mydomain = mailing.suaempresa.com" >> /etc/postfix/main.cf
echo "myorigin = $mydomain" >> /etc/postfix/main.cf
echo "mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain" >> /etc/postfix/main.cf
echo "mynetworks = 127.0.0.0/8 SUA_REDE/CIDR" >> /etc/postfix/main.cf
echo "# limit an email size for 10M" >> /etc/postfix/main.cf
echo "message_size_limit = 10485760" >> /etc/postfix/main.cf
echo "# limit a mailbox for 1G" >> /etc/postfix/main.cf
echo "mailbox_size_limit = 1073741824" >> /etc/postfix/main.cf

Para instalar o PHPList, execute:

cd /tmp
wget -O phplist-3.2.7.zip http://prdownloads.sourceforge.net/phplist/phplist-3.2.7.zip?download
unzip phplist-3.2.7.zip
mv /tmp/phplist-3.2.7/public_html/* /var/www/html/phplist/
chown -R apache /var/www/html/phplist
ln -s /var/www/html/phplist/lists/images /var/www/html/phplist/images
vim /var/www/html/phplist/lists/config/config.php

Altere as seguintes linhas abaixo (será necessário a senha definida com acesso à base phplistdb, na instalação do MySQL):

Texto original

Deverá ser alterado para

$database_password = ‘your_password’;$database_password = ‘secretpassword‘;
define (‘TEST’, 1);define (‘TEST’, 0);
# $message_envelope = ‘listbounces@yourdomain’;$message_envelope = ‘mail@mailing.suaempresa.com‘;
ADICIONE NO FINAL DO ARQUIVO$default_system_language = “en”;

Em seguida, execute:

vim /var/www/html/phplist/lists/admin/ui/dressprow/footer_minified.inc

Aperte a tecla INSERT do teclado para entrar em modo de edição e apague as seguintes linhas:

<a target=”_blank” href=”https://phplist.com”>© phpList ltd.</a> – v<?php echo VERSION?>
<div class=”right”>
<a target=”_blank” href=”https://resources.phplist.com”>Resources</a>  |
<a target=”_blank” href=”http://twitter.com/phplist”><img src=”ui/dressprow/images/twitter.png” alt=”phpList twitter” />

Altere também o seguinte conteúdo:

Texto original

Deverá ser alterado para

<div id=”context-menu” class=”menutableright block”>
<h3>Navigation</h3>
<?php print contextMenu(); ?>
</div>
<div id=”recent” class=”menutableright block”>
<?php print recentlyVisited(); ?>
</div>
<div id=”language”>
<?php print $languageswitcher; ?>
</div>
<div class=”clear”></div>
<?php include dirname(__FILE__).’/rssfeed.php’; ?>
</div><!– end #right-bar –>
<div id=”context-menu” class=”menutableright block”>
</div>
<div id=”recent” class=”menutableright block”>
</div>
<div class=”clear”></div>
</div><!– end #right-bar –>

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

vim /var/www/html/phplist/lists/admin/ui/dressprow/footer.inc

Edite o arquivo, apague e altere as mesmas linhas citadas acima. Em seguida execute:

vim /var/www/html/phplist/lists/admin/ui/dressprow/header.inc

Aperte a tecla INSERT do teclado para entrar em modo de edição e altere as seguintes linhas:

Texto originalDeverá ser alterado para
<div id=”logo”><a href=”http://www.phplist.com” target=”_blank”><img src=”ui/dressprow/images/branding.png” alt=”phpList, email newsletter manager, logo” title=”phpList, the world’s most popular Open Source newsletter manager” /></a></div><div id=”logo”><a href=”http://mailing.suaempresa.com“><img src=”ui/dressprow/images/branding.png” alt=”Mailing Corporativo” title=”Mailing SUA EMPRESA, servidor de listas” /></a></div>

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, execute:

vim /var/www/html/phplist/lists/admin/login.php

Aperte a tecla INSERT do teclado para entrar em modo de edição e apague a seguinte linha footer();:

Ao final, pressionar a tecla ESC para sair do modo de edição, digitar :wq! e pressionar ENTER para sair e salvar. Em seguida, edite também (com um programa de edição de imagens) o arquivo /var/www/html/phplist/lists/admin/ui/dressprow/images/branding.png.

Depois acesse o endereço http://mailing.suaempresa.com/lists/admin , na tela que abrir, clique em Initialise Database. Na tela seguinte responda o seguinte:

  • Please enter your name: Suporte
  • The name of your organization: SUA EMPRESA
  • Please enter your email address: suporte@suaempresa.com
  • Please enter the password you want to use for this account: Verificar a senha com a equipe de redes

Clique em next, na tela seguinte clique em do not subscribe. Clique em Continue with phpList Setup.

Fontes/Referências

NVLAN – Configurar o apache como HTTPS (com SSL) no CentOS
NVLAN – Instalando o MariaDB no CentOS
NVLAN – Instalando um servidor de Mailing em CentOS utilizando o Mailman
NVLAN – Instalação padrão do CentOS7

https://docs.phpmail.org/28/en/Installing_MSSQL_for_PHP
https://forums.cpanel.net/threads/access-logs-for-mysql.223632/
https://www.phplist.org/manual/ch028_installation.xhtml
https://www.rosehosting.com/blog/how-to-install-phplist-on-a-centos-7-vps/
https://www.server-world.info/en/note?os=CentOS_7&p=mail

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria