Tag: cpanel
Encontrando e excluindo arquivos error_log
Bom dia a todos.
Quem trabalha com cPanel,DirectAdmin e/ou quaisquer outros tipos de servidores webs (bem configurados) sabem que quando um erro é gerado um log é automaticamente gerado.
Na maioria das vezes esse log é armazenado em um arquivo chamado error_log, quando não monitorado esse arquivo pode chegar a tamanhos astronômicos (+1GB).
Se você tiver muitas contas no servidor fazer isso manualmente é inviável, por isso utilizaremos o “FIND” para que faça o trabalho duro para nós.
Primeiramente vamos listar os arquivos (e testar o comando por precaução rs..)
1 |
find /home/*/public_html/ -type f -iname error_log -exec du -sh {} \; |
Após a execução do comando acima você deve ter um output semelhante ao abaixo
Tendo nosso comando validado é hora de executar a limpeza, para isso também utilizaremos o find para com um argumento final de exclusão.
1 |
find /home/*/public_html/ -type f -iname error_log -delete |
E prontinho, todos os arquivos error_log serão excluídos de forma automatizada poupando tempo.
Caso queira, também é possível que você faça isso através de uma Cron.
Nos servidores que administro eu configuro para que uma cron seja executada 1x a semana (Domingos).
Para isso basta você adicionar a seguinte linha a sua cron
1 |
* 21 * * 0 /bin/find /home/*/public_html/ -type f -iname error_log -delete > /dev/null 2>&1 |
Obs: Na cron acima ele realizará o processo de busca e exclusão todos os Domingos as 21:00.
Lembrando que você pode ajustá-la conforme sua necessidade.
Após adicionar a cron lembre-se de reiniciar o crond.
Como listar contas de e-mail no cPanel
A um tempo atrás eu precisava exportar os e-mails de um determinado domínio para que então pudesse importar em um sistema de AntiSpam (SpamExperts).
Dando uma pesquisada na internet encontrei um script bem simples e fácil de ser utilizado onde ele listará de maneira organizada todas as contas existentes no servidor (para todos os domínios).
Para utilizar o script basta criar um arquivo (ex: listar-contas.sh) e colar o conteúdo abaixo.
Após isso basta executar um bash listar-contas.sh , vale lembrar que é necessária permissão para executar o script.
Se quiser salvar o resultado em um arquivo de texto por exemplo basta executar bash listar-contas.sh >> arquivo.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/bin/bash OWNER=$@ KONTA=`ls -1A /var/cpanel/users/` count=1 for x in `echo -n "$KONTA"`;do wiersz=`grep -i ^dns /var/cpanel/users/"$x" |cut -d= -f2` DOMAIN[$count]=$wiersz count=$[$count+1] echo "Login: `echo "$x"`" for i in `echo "${DOMAIN[@]}" | sed 's/ /\n/g'`;do for n in ` ls -A /home/"$x"/mail/"$i"/ 2>/dev/null`;do if [ "$n" == "cur" ];then echo "$n" > /dev/null elif [ "$n" == "new" ];then echo "$n" > /dev/null elif [ "$n" == "tmp" ];then echo "$n" > /dev/null elif [ "$n" == "" ];then echo "$n" > /dev/null else echo "$n"@"$i" fi done done echo;echo; done |
Como alterar a porta de FTP no WHM/cPanel?
Ultimamente alguns servidores que administramos vem sofrendo com ataques de Botnets fazendo bruteforce na porta 21 (padrão ftp), como os ataques são automatizados e sempre na porta 21 uma das soluções que decidimos tomar é alterar a porta de comunicação do servidor FTP e bloquear a porta padrão em nosso firewall.
Se você está sofrendo com o mesmo tipo de problema e precisa alterar a porta padrão, basta seguir as informações abaixo onde explicaremos como alterar a porta padrão dos 2 servidores de FTP comuns nos servidores que rodam WHM/cPanel.
PURE-FTPD
Se você está utilizando o Pure-ftpd como servidor de FTP você precisará editar a configuração do Bind contidas em /etc/pure-ftpd.conf
1 2 |
# IP address/port to listen to (default=all IP and port 21). Bind 21 |
para qualquer valor desejado como no exemplo (233) abaixo
1 2 |
# IP address/port to listen to (default=all IP and port 21). Bind 233 |
PRO-FTPD
Se você está utilizando o ProFTPD então precisará editar a configuração Port contida no arquivo /etc/proftpd.conf
1 |
Port 21 |
para qualquer valor desejado como no exemplo (233) abaixo
1 |
Port 233 |
Feita as alterações basta você reiniciar o serviço do FTP para que as mesmas sejam aplicadas
1 |
/scripts/restartsrv_ftpserver |
Obs: Vale lembrar que é necessária a liberação da porta escolhida no seu firewall.
Como bloquear emails no exim/cpanel?
Se igual a mim você tem um sério e recorrente problema com SPAM por empresas enviando besteiras perguntando se você leu seu email anterior e que a “grande proposta” que eles fizeram antes ainda está disponível e bla bla bla..
Este tipo de SPAM é tão chato porque eles são tão insistente em obter resposta mas você simplesmente quer que eles desapareçam!!
Bem, agora você pode forçá-los a ir sumir para sempre, isto obviamente só funciona para empresas que estão enviando e-mails de seus próprios domínio em vez de contas do Gmail ou Hotmail genéricos, mas é muito eficaz já que nenhum e-mail desses domínios bloqueados não serão entregues a qualquer conta no seu servidor.
Eu pesquisei e encontrei alguns guias on-line mas foi realmente confuso, então eu pensei que eu iria criar o meu próprio guia detalhando como bloquear e-mails através de regras do Exim dentro do cPanel/WHM.
Siga o passo a passo abaixo:
Criando o arquivo de bloqueio
1.1- Crie o arquivo da blacklist (onde ficarão os domínios a serem bloqueados)
Obs: Você precisará de acesso ssh com permissões de root.
1 |
nano /etc/exim_blacklist |
Adicione os domínios que deseja bloquear, sempre um por linha.
1 2 3 |
dominio1.com.br dominio2.com dominio3.ru |
Obs: Sempre que adicionar um novo domínio na lista não se esqueça de reiniciar o Exim.
Configurando o Exim
Aqui é onde a mágica acontece, configuraremos o exim para capturar os domínios da lista criada acima e então ignorar todo e qualquer e-mail vindo dos domínios listados.
2.1 – Faça login em seu WHM , acesse Service Configuration >> Exim Configuration Manager e clique na aba Advanced Editor como mostra a imagem abaixo
Primeiro campo: domainlist exim_blacklist
Segundo campo: lsearch;/etc/exim_blacklist
2.2 – Desça a página e procure por um botão grande e Azul que diz + Add additional configuration setting
2.3 – Ao clicar no botão 2 campos aparecerão, no primeiro campo você deverá inserir a lista criada e na segunda o local onde o Exim deverá pesquisar os domínios a serem bloqueados.
2.4 – Desça um pouco a página e procure por um campo (grande) que diz “Section: PREROUTERS”, na caixa de texto que há abaixo insira as seguintes linhas:
1 2 3 4 5 6 |
reject_domains: driver = redirect # RBL Blacklist incoming hosts domains = +exim_blacklist allow_fail data = :fail: Connection rejected: SPAM source $domain is manually blacklisted |
3.- Desça a página até o final e clique no botão “Save” para salvar as configurações do item 2 e reiniciar o Exim.
Você pode adicionar quantos domínios desejar no arquivo /etc/exim_blacklist desde que se respeite a condição de um domínio por linha.
Sempre que realizar alteração no arquivo lembre-se de reiniciar o Exim (como precaução).
——————————————————————————–
Nos logs do Exim (/var/log/exim_mainlog) sempre que um e-mail de determinado domínio (da blacklist) for bloqueado gerará um log semelhante ao abaixo:
1 2 3 4 5 |
2017-05-28 09:58:01 H=xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 sender verify fail for <nome@dominio.com.br>: Connection rejected: SPAM source xxxxxxxxxxx.com.br is manually blacklisted 2017-05-28 09:58:01 H=xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no F=<nome@dominio.com.br> rejected RCPT <destinatario@dominio.com.br>: Sender verify failed 2017-05-28 09:58:02 H=xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 Warning: "Detected session with all messages failed" 2017-05-28 09:58:02 H=xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 Warning: "Increment slow_fail_block Ratelimit - xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 because of all messages failed" 2017-05-28 09:58:02 SMTP connection from xxxxxxxxxxx.com.br [yyy.yyy.yyy.yyy]:56567 closed by QUIT |
Obs: Obviamente ocultei as informações de IPv4 e domínios.
CONCLUSÃO
Com a configuração acima todos os e-mails que correspondem aos domínios na lista serão ignorados, o remetente não vai saber, você não vai saber e você pode continuar o seu trabalho em total paz.
Como deletar emails de uma conta específica no EXIM
Olá pessoal, seguindo nossa série de dicas vamos postar neste instante uma dica simples para os sysadmins, mas que é muito útil quando precisamos limpar dados desnecessários na fila de emails (tornando outros emails lentos).
Vamos lá, em primeira mão iremos simplificar o uso do comando com algumas informações:
1 |
/usr/sbin/exim -bpru | grep ‘root’ | awk {‘print $3′} | xargs /usr/sbin/exim -Mrm |
Antes do pipe “|” percebemos que estamos pedindo os remetentes da fila de email, após o pipe estamos recebendo o argumento (email) e no último pipe estamos usando o xargs (comando que serve para receber a saída de um comando e aplicar outro), logo, recebemos a saída do comando como remetentes e estamos aplicando o comando do exim de remoção de mensagens. Citamos a conta root pois deletamos algumas notificações, mas no lugar de root poderia ser emaildousuário@qualquercoisa.com.br.
Há dicas na Web que recomendam aplicar frozen nos emails e depois remover todos os emails frozen, porém, remover emails congelados torna-se perigoso pois grande parte deles pode estar congelado pelo simples fato do servidor de destino ter apresentado alguma falha e em seguida será restabelecido para receber a nova tentativa de envio, removendo você tira toda chance disto acontecer.
WARNING: ‘require ‘rake/rdoctask” is deprecated. Please use ‘require ‘rdoc/task’
Em um ambiente CPANEL se isto estiver ocorrendo você necessitará de um downgrade no Rake.
Para isto, você deve saber a exata versão do rake do seu Ruby on Rails, no meu caso de exemplo:
1 |
gem uninstall rake -v 0.9.2.2 |
1 |
gem uninstall rake -v 0.9.2 |
1 |
Rode os dois comandos acima para tentar achar a versão 0.9.2, por exemplo, depois de feitos os comandos use o comando para instalar o rake mais antigo:
1 |
gem install rake -v 0.8.7 |
1 |
1 |
Feito isto é só alegria! |
localhost.localdomain.com CPANEL criando ou deletando contas
Se ao criar ou deletar uma conta no CPANEL você está recebendo a mensagem new account on localhost.localdomain.com, se já colocou entrada A e ajustou todo dns do servidor e ainda recebe esse tipo de erro, no problem, é simples de se resolver.
Entre no arquivo /etc/wwwacct.conf e no final dele mude de localhost.localdomain.com para meuhostname.domíniodoservidor.com.br
Pronto!
:)
MySQL server has gone away
Seu mysql anda estranho quando você está tentando fazer upload de um arquivo enorme via console (na verdade o restore, ou seja, mysql -u usuario -p nomedobdprarestaurar < arquivo.sql)???
Bem, se a mensagem de erro for esta -> MySQL server has gone away NÃO precisa entrar em pânico, só existem 2 coisas que são feitas e sanam tranquilamente o erro:
1 – entre no /etc/my.cnf (ou arquivo de configuração do mysql) e informe set-variable = max_connections=1500
Isto vai liberar para 1500 conexões concorrentes no mysql.
2 – Se o erro persistir, no mesmo arquivo informe:
max_allowed_packet = 5000000000
Você estará liberando uploads/restore/dumps de 1gb de tamanho.
Depois disso, reinicie o mysql (normalmente service mysql restart) e corra para o abraço.
Ah, se quiser ver qual valor ficou setado (só para conferir depois do restart use):
mysql> SHOW VARIABLES LIKE ‘max_allowed_packet’;
localhost did not have any working mirrors. Please check your internet connection or dns server. at /usr/local/cpanel/Cpanel/HttpRequest.pm line 596.
Se toda vez que você tenta rodar o EASYAPACHE esse erro é exibido, nada de pânico, existem 2 coisas a serem verificadas ( erro é localhost did not have any working mirrors. Please check your internet connection or dns server. at /usr/local/cpanel/Cpanel/HttpRequest.pm line 596. ):
Vá no /etc/resolv.conf e adicione isto no começo do arquivo:
nameserver 8.8.8.8
nameserver 8.8.4.4
Ambos são dns da GOOGLE.
Tente novamente, se não rodar é por que seu arquivo /etc/hosts tem uma entrada de ip inválida ou um host inválido para o nome do seu servidor, quando na verdade deve ficar como loopback, veja um exemplo de COMO deveria ser o seu /etc/hosts:
1 2 |
127.0.0.1 localhost localhost.localdomain ip.da.internet.publico hostname.domeudomínio.com.br hostname |