{"id":3727,"date":"2015-06-12T15:59:34","date_gmt":"2015-06-12T15:59:34","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=3727"},"modified":"2015-06-12T15:59:34","modified_gmt":"2015-06-12T15:59:34","slug":"ip-rotativo-no-cpanel-exim-solucao-definitiva","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2015\/06\/12\/ip-rotativo-no-cpanel-exim-solucao-definitiva\/","title":{"rendered":"IP Rotativo no CPanel + Exim [Solu\u00e7\u00e3o Definitiva]"},"content":{"rendered":"<p><img decoding=\"async\" class=\"img-responsive\" title=\"ip-rotativo-cpanel-exim\" src=\"http:\/\/www.tiagomatos.com\/files\/posts\/32\/cover\/850x330\/ip-rotativo-cpanel-exim.jpg\" alt=\"ip-rotativo-cpanel-exim\" \/><\/p>\n<div class=\"lc-blog-data\">\n<ul>\n<li><i class=\"fa fa-calendar-o\"><\/i> 28 de Set de 2014<\/li>\n<li><i class=\"fa fa-eye\"><\/i> 2080 Visualiza\u00e7\u00f5es<\/li>\n<li><i class=\"fa fa-comments\"><\/i> 6 Coment\u00e1rios<\/li>\n<\/ul>\n<div class=\"clearfix\"><\/div>\n<\/div>\n<div class=\"lc-blog-txt\">\n<p>Apresento para voc\u00eas meus caros colegas a solu\u00e7\u00e3o definitiva para realizar rota\u00e7\u00e3o de IPs no servidor de hospedagem de sites com painel CPanel + Exim.<\/p>\n<p>Antes de disponibilizar o c\u00f3digo, eu testei por quase 1 ano. Sendo assim, garanto que realmente funciona.\u00a0<img decoding=\"async\" title=\"smiley\" src=\"http:\/\/www.tiagomatos.com\/js\/ckeditor\/plugins\/smiley\/images\/regular_smile.png\" alt=\"smiley\" width=\"23\" height=\"23\" \/><\/p>\n<p>Bem, primeiro quero deixar bem claro algumas situa\u00e7\u00f5es:<\/p>\n<ul>\n<li>Esta solu\u00e7\u00e3o \u00e9 de minha autoria e testada no CPanel 11, Exim 4 e servidor linux CentOS 6. O uso do script que estou disponibilizando \u00e9 de sua total responsabilidade.<\/li>\n<li>Eu sou totalmente contra SPAM e as\u00a0<a href=\"http:\/\/www.abemd.org.br\/boasmaneiras.htm\" target=\"_blank\" rel=\"nofollow\">regras de boas maneiras<\/a>\u00a0de uso de e-mail devem ser obedecidas.<\/li>\n<li>O intuito deste script \u00e9 fazer com que o servidor trabalhe com melhor performance e n\u00e3o deve ser usado para praticar SPAM.<\/li>\n<\/ul>\n<p>Se voc\u00ea estiver com a necessidade de rotacionar IPs no seu servidor, continue lento este artigo que voc\u00ea ir\u00e1 aprender sobre:<\/p>\n<ul>\n<li>O que preciso saber antes de iniciar a configura\u00e7\u00e3o de rota\u00e7\u00e3o de IPs?<\/li>\n<li>Por que devo rotacionar IPs em um servidor?<\/li>\n<li>Precisa fazer alguma altera\u00e7\u00e3o de configura\u00e7\u00e3o no CPanel?<\/li>\n<li>Como configurar o meu range de IPs no script de rota\u00e7\u00e3o?<\/li>\n<li>Como posso definir o intervalo de tempo de rota\u00e7\u00e3o?<\/li>\n<\/ul>\n<p>Voc\u00ea deve ficar ciente que a rota\u00e7\u00e3o de IPs n\u00e3o isenta as demais configura\u00e7\u00f5es do servidor para ter um bom n\u00edvel de entrega de e-mail. Ou seja, ainda ser\u00e1 necess\u00e1rio configurar corretamente o rDNS, regras de SPF e DKIM.<\/p>\n<p>A uni\u00e3o de todas essas configura\u00e7\u00f5es aliada a rota\u00e7\u00e3o de IPs, certamente voc\u00ea ter\u00e1 sucesso nas entregas de e-mail do seu servidor.<\/p>\n<p>Ah! Antes que eu me esque\u00e7a, voc\u00ea ter\u00e1, obrigatoriamente, acesso n\u00edvel root via terminal ao servidor.<\/p>\n<h2>Por que devo rotacionar IPs em um servidor?<\/h2>\n<p>Vamos supor que voc\u00ea envie 1.000 e-mails por hora e que o servidor possui apenas 1 IP. Logo, este \u00fanico IP vai receber uma carga muito alta de envio, cerca de 24.000 por dia!<\/p>\n<p>Quando se trata de um n\u00famero baixo, n\u00e3o h\u00e1 problema algum. Na verdade nem precisa se preocupar.<\/p>\n<p>Agora, imagine um servidor com 100 sites hospedados e cada site enviando 500 e-mails por hora. Teremos uma sobrecarga em um \u00fanico IP muito grande, n\u00e3o acha?<\/p>\n<p>Mas, se voc\u00ea adicionar mais um IP neste mesmo servidor, ficando 2, logo 1.000 disparos de e-mails ser\u00e3o rateados entre 2 IPs, ficando 500 para cada, teoricamente.<\/p>\n<p>Por que teoricamente?\u00a0Por que o script que disponibilizei para voc\u00ea possui uma fun\u00e7\u00e3o rand\u00f4mica para escolher o IP. Sendo assim, h\u00e1 possibilidade de ser sorteado mais um IP do que o outro e vice-versa. Dessa forma, o rateamento de disparo n\u00e3o \u00e9 exato, e nem deve ser.<\/p>\n<p>Mas voc\u00ea deve estar se perguntando qual seria o problema de enviar muitos e-mails de um \u00fanico IP levando em considera\u00e7\u00e3o que estes e-mails seriam realmente aut\u00eanticos e excluindo a possibilidade de SPAM.<\/p>\n<p>Ora&#8230; ora! Os maiores servidores de e-mail como GMail, Hotmail, Yahoo, etc., possuem um limite de recebimento. Sendo assim, se voc\u00ea disparar uma carga alta de e-mail sob um \u00fanico IP, e esta quantidade ultrapassar os limites estabelecidos por estes servidores, \u00e9 capaz, ou quase certeza, de que eles ir\u00e3o ignorar os e-mails que ultrapassaram o limite.<\/p>\n<p>E quando isso acontece meu amigo, eles ficar\u00e3o sempre de olho nos seus envios, suspeitando-os! O Hotmail \u00e9 mestre nisso.<\/p>\n<p>Mas, mesmo rotacionando IPs voc\u00ea pode ultrapassar estes limites a depender do seu volume de envio.<\/p>\n<p>Os servidores que citei, podem, tamb\u00e9m, bloquear todo o seu bloco de IP com essas a\u00e7\u00f5es.<\/p>\n<p>Ou seja, voc\u00ea nunca estar\u00e1 100% seguro, mas o que a rota\u00e7\u00e3o de IP faz \u00e9 tentar amenizar estes futuros problemas. Digo isso por experi\u00eancia pr\u00f3pria.\u00a0<img decoding=\"async\" title=\"frown\" src=\"http:\/\/www.tiagomatos.com\/js\/ckeditor\/plugins\/smiley\/images\/confused_smile.png\" alt=\"frown\" width=\"23\" height=\"23\" \/><\/p>\n<h2>Configurando o CPanel<\/h2>\n<p>Antes de mais nada, voc\u00ea precisa fazer algumas configura\u00e7\u00f5es (calma, coisa simples!) no CPanel.<\/p>\n<p>1) Desativar a op\u00e7\u00e3o\u00a0<strong>Send mail from account\u2019s dedicated IP address<\/strong><br \/>\n2) Ativar a op\u00e7\u00e3o\u00a0<strong>Reference \/etc\/mailhelo for outgoing SMTP HELO<\/strong><br \/>\n3) Ativar a op\u00e7\u00e3o\u00a0<strong>Reference \/etc\/mailips for outgoing SMTP connections<\/strong><\/p>\n<p>Para alterar essas op\u00e7\u00f5es, acesse o seu WHM e localize no menu a esquerda a op\u00e7\u00e3o <em>Service Configuration<\/em> &gt;<em>Exim Configuration Manager<\/em>.<\/p>\n<p>Feito isso, no segundo menu horizontal, selecione <strong>Domain and IPs<\/strong>. As op\u00e7\u00f5es ser\u00e3o exibidas.<\/p>\n<p>Para entender mais sobre essas configura\u00e7\u00f5es, <a href=\"http:\/\/docs.cpanel.net\/twiki\/bin\/view\/AllDocumentation\/WHMDocs\/EximDifferentIps\" target=\"_blank\" rel=\"nofollow\">acesse este link na documenta\u00e7\u00e3o do CPanel<\/a>.<\/p>\n<h2>A t\u00e3o esperada solu\u00e7\u00e3o definitiva\u00a0de rota\u00e7\u00e3o de IPs para servidor CPanel + Exim!<\/h2>\n<p>Veja agora sem mais rodeios&#8230;<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"com\">#!\/bin\/bash<\/span><\/li>\n<li class=\"L1\"><span class=\"com\">#script to change the ip of outgoing e-mail exim<\/span><\/li>\n<li class=\"L2\"><span class=\"com\">#you must add a line in crontab <\/span><\/li>\n<li class=\"L3\"><span class=\"com\">#*\/15 * * * * sh \/your_path\/eximrandomips.sh<\/span><\/li>\n<li class=\"L4\"><span class=\"com\">#powered by Tiago Matos &#8211; web developer :: www.tiagomatos.com<\/span><\/li>\n<li class=\"L5\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L6\"><span class=\"com\">#path<\/span><\/li>\n<li class=\"L7\"><span class=\"pln\">path<\/span><span class=\"pun\">=\/<\/span><span class=\"pln\">etc<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">mailips<\/span><\/li>\n<li class=\"L8\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L9\"><span class=\"com\">#ip list<\/span><\/li>\n<li class=\"L0\"><span class=\"pln\">ips<\/span><span class=\"pun\">=(<\/span><span class=\"str\">&#8220;XXX.XXX.XXX.XXX&#8221;<\/span> <span class=\"str\">&#8220;XXX.XXX.XXX.XXX&#8221;<\/span><span class=\"pun\">)<\/span><\/li>\n<li class=\"L1\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L2\"><span class=\"com\">#read current ip<\/span><\/li>\n<li class=\"L3\"><span class=\"pln\">mailips<\/span><span class=\"pun\">=<\/span><span class=\"str\">`head -n 1 ${path}`<\/span><\/li>\n<li class=\"L4\"><span class=\"pln\">current_ip<\/span><span class=\"pun\">=<\/span><span class=\"pln\">$<\/span><span class=\"pun\">{<\/span><span class=\"pln\">mailips<\/span><span class=\"com\">##*: }<\/span><\/li>\n<li class=\"L5\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L6\"><span class=\"com\">#delete current ip of ips array<\/span><\/li>\n<li class=\"L7\"><span class=\"kwd\">for<\/span><span class=\"pln\"> i <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> $<\/span><span class=\"pun\">{!<\/span><span class=\"pln\">ips<\/span><span class=\"pun\">[@]};<\/span> <span class=\"kwd\">do<\/span><\/li>\n<li class=\"L8\"><span class=\"kwd\">if<\/span> <span class=\"pun\">[<\/span> <span class=\"str\">&#8220;${ips[$i]}&#8221;<\/span> <span class=\"pun\">==<\/span><span class=\"pln\"> $<\/span><span class=\"pun\">{<\/span><span class=\"pln\">current_ip<\/span><span class=\"pun\">}<\/span> <span class=\"pun\">];<\/span> <span class=\"kwd\">then<\/span><\/li>\n<li class=\"L9\"><span class=\"pln\"> unset ips<\/span><span class=\"pun\">[<\/span><span class=\"pln\">$i<\/span><span class=\"pun\">]<\/span><\/li>\n<li class=\"L0\"><span class=\"kwd\">fi<\/span><\/li>\n<li class=\"L1\"><span class=\"kwd\">done<\/span><\/li>\n<li class=\"L2\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L3\"><span class=\"com\">#shuffle ips<\/span><\/li>\n<li class=\"L4\"><span class=\"pln\">ips_shuf<\/span><span class=\"pun\">=(<\/span><span class=\"pln\">$<\/span><span class=\"pun\">(<\/span><span class=\"pln\">shuf <\/span><span class=\"pun\">&#8211;<\/span><span class=\"pln\">e $<\/span><span class=\"pun\">{<\/span><span class=\"pln\">ips<\/span><span class=\"pun\">[*]}))<\/span><\/li>\n<li class=\"L5\"><span class=\"pln\">\u00a0<\/span><\/li>\n<li class=\"L6\"><span class=\"com\">#write new ip in mailips<\/span><\/li>\n<li class=\"L7\"><span class=\"pln\">echo <\/span><span class=\"str\">&#8220;*:&#8221;<\/span><span class=\"pln\"> $<\/span><span class=\"pun\">{<\/span><span class=\"pln\">ips_shuf<\/span><span class=\"pun\">[<\/span><span class=\"lit\">0<\/span><span class=\"pun\">]}<\/span> <span class=\"pun\">&gt;<\/span><span class=\"pln\"> $<\/span><span class=\"pun\">{<\/span><span class=\"pln\">path<\/span><span class=\"pun\">}<\/span><\/li>\n<\/ol>\n<p>Bom, a\u00ed est\u00e1 o script completo. \u00c9 isso mesmo! Acredite! \u00c9 o script completo&#8230;\u00a0<img decoding=\"async\" title=\"laugh\" src=\"http:\/\/www.tiagomatos.com\/js\/ckeditor\/plugins\/smiley\/images\/teeth_smile.png\" alt=\"laugh\" width=\"23\" height=\"23\" \/><\/p>\n<p>Na linha 08, eu determino o caminho (\/etc\/mailips) do arquivo que o CPanel usa para ler as personaliza\u00e7\u00f5es de IPs de cada dom\u00ednio hospedado no servidor. Mas neste caso, utilizei o crit\u00e9rio global para todos os dom\u00ednios.<\/p>\n<p>A linha 11 \u00e9 onde voc\u00ea deve mexer. Coloque os seus IPs seguindo essa sintaxe (&#8220;ip01&#8221; &#8220;ip02&#8221; &#8220;ip03&#8221; &#8230;). Liste quantos IPs desejar, mas desde que eles existam no seu servidor.<\/p>\n<p>A linha 14 e 15, eu fa\u00e7o a leitura do IP que j\u00e1 est\u00e1 em uso para que o script n\u00e3o sorteie novamente este mesmo IP.<\/p>\n<p>Da 18 \u00e0 22, eu excluo da lista de IPs\u00a0o IP usado atualmente.<\/p>\n<p>A linha 25 \u00e9 onde fa\u00e7o o sorteio do novo IP.<\/p>\n<p>E por fim, na linha 28, eu imprimo o novo IP no arquivo citado na linha 08, o <em>mailips<\/em>.<\/p>\n<h2>E agora, o que fa\u00e7o com este arquivo?<\/h2>\n<p>Ap\u00f3s configurado, salve o arquivo em um diret\u00f3rio seguro no seu servidor com o nome &#8220;<em>eximrandomips.sh&#8221;<\/em>, sem as aspas.<\/p>\n<h2>E o intervalo de rota\u00e7\u00e3o?<\/h2>\n<p>Simples, basta voc\u00ea adicionar nas suas regras cron a seguinte linha:<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">*<\/span><span class=\"str\">\/15 * * * * sh \/<\/span><span class=\"pln\">your_path<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">eximrandomips<\/span><span class=\"pun\">.<\/span><span class=\"pln\">sh<\/span><\/li>\n<\/ol>\n<p>Neste caso, estou dizendo a minha tarefa cron, que execute o script de 15 em 15 minutos (*\/15).<\/p>\n<p>Lembre-se tamb\u00e9m de configurar o caminho completo do script. Se por exemplo voc\u00ea salvou o arquivo no diret\u00f3rio \/root, ficar\u00e1 assim:<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">*<\/span><span class=\"str\">\/15 * * * * sh \/<\/span><span class=\"pln\">root<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">eximrandomips<\/span><span class=\"pun\">.<\/span><span class=\"pln\">sh<\/span><\/li>\n<\/ol>\n<p>F\u00e1cil n\u00e3o? Mam\u00e3o com a\u00e7\u00facar!\u00a0<img loading=\"lazy\" decoding=\"async\" title=\"surprise\" src=\"http:\/\/www.tiagomatos.com\/js\/ckeditor\/plugins\/smiley\/images\/omg_smile.png\" alt=\"surprise\" width=\"23\" height=\"23\" \/><\/p>\n<p>E voc\u00ea tem uma solu\u00e7\u00e3o melhor? Tem alguma d\u00favida\/sugest\u00e3o? Por favor, comente para que este post fique mais atrativo.\u00a0Isso ser\u00e1 bastante enriquecedor para o tema, te garanto!<\/p>\n<p>Github:\u00a0<a href=\"https:\/\/github.com\/tiagomatosweb\/ip-rotativo-cpanel-exim\" target=\"_blank\">https:\/\/github.com\/tiagomatosweb\/ip-rotativo-cpanel-exim<\/a><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>http:\/\/www.tiagomatos.com\/blog\/ip-rotativo-no-cpanel-exim-solucao-definitiva<\/p>\n","protected":false},"excerpt":{"rendered":"<p>28 de Set de 2014 2080 Visualiza\u00e7\u00f5es 6 Coment\u00e1rios Apresento para voc\u00eas meus caros colegas a solu\u00e7\u00e3o definitiva para realizar rota\u00e7\u00e3o de IPs no servidor de hospedagem de sites com painel CPanel + Exim. Antes de disponibilizar o c\u00f3digo, eu testei por quase 1 ano&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":3729,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[19],"tags":[],"class_list":["post-3727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whmcapenel"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=3727"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media\/3729"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=3727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=3727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=3727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}