<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos Outros - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/category/sem-categoria/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/category/sem-categoria</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Mon, 21 Dec 2020 23:44:59 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos Outros - Remontti</title>
	<link>https://blog.remontti.com.br/category/sem-categoria</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</title>
		<link>https://blog.remontti.com.br/1651</link>
					<comments>https://blog.remontti.com.br/1651#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 14 Feb 2017 01:28:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[eap]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[ippool]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[psk]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[ubiquiti]]></category>
		<category><![CDATA[ubnt]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1651</guid>

					<description><![CDATA[<p>Versão mais atual deste tutorial: https://blog.remontti.com.br/4063 https://blog.remontti.com.br/4085 (Descontinuado) Neste tutorial vamos configurar o FreeRadius de forma simples em um servidor linux (Debina 8), armazenando nossos usuários e atributos de configurações em uma base de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1651">Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><font color="red"><strong>Versão mais atual deste tutorial: </strong></font></h1>
<p><a href="https://blog.remontti.com.br/4063" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4063</a><br />
<a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a></p>
<hr>
<p>(Descontinuado)</p>
<hr>
<p align="justify">
Neste tutorial vamos configurar o <a href="https://pt.wikipedia.org/wiki/FreeRADIUS" target="_blank" rel="noopener noreferrer">FreeRadius </a>de forma simples em um servidor linux (Debina 8), armazenando nossos usuários e atributos de configurações em uma base de dados MySQL, qual será utilizada para autenticações PPPoE ou Hotspot, no RouterOS (<a href="http://wiki.mikrotik.com/wiki/Main_Page" target="_blank" rel="noopener noreferrer">Mikrotik</a>). Vamos tratar ainda do módulos IPPOOL para armazenar nossa pool de IPs no banco de dados e o módulo COUNTER muito usado em configurações de Hotspot para controle de tempo da conexão. E por fim um extra de como configurar seu Access Point (AP)/ Station (Clientes/<a href="https://pt.wikipedia.org/wiki/Customer_Premises_Equipment" target="_blank" rel="noopener noreferrer">CPE</a>) para fazer autenticação Wireless (PSK / EAP) em seus equipamentos <a href="https://www.ubnt.com/" target="_blank" rel="noopener noreferrer">Ubiquiti</a>/Mikrotik entre outros. </p>
<p>Resumindo é um dos cenário mais encontrado em provedores de internet. Se você gostou do tutorial ou tem dúvidas deixe seu comentário. Se precisar de alguma consultoria ou trocar uma ideia pode me chamar lá no <a href="https://telegram.org/" target="_blank" rel="noopener noreferrer">Telegram</a> <a href="https://telegram.me/Remontti" target="_blank" rel="noopener noreferrer">@remontti</a> <em>(Não garanto que irei responder rápido, mas sempre tiver um tempinho&#8230;)</em>
</p>
<p><strong>REQUISITOS</strong><br />
1 – Debian 8 Jessie recomendo uma instalação limpa do Debian (<a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">Debian 8 Jessie / Instalação Limpa</a>)<br />
2 – Serviço Web Rodando (<a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Passo-a-passo como criar um servidor web Apache2, PHP5, MySQL, PHPMyAdmin “LAMP” no Debian 8</a>)<br />
3 – Servidor Atualizado: </p>
<pre class="remontti-code"># apt update &amp;&amp; apt upgrade</pre>
<p><strong>INSTALAÇÃO</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p><strong>Integração com MySQL</strong></p>
<p>Após instalação vamos criar nossa base de dados chamada de &#8220;radius&#8221;, e após criar nosso usuário que também se chamara &#8220;radius&#8221; para ter acesso a mesma.</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p>informe a senha do seus usuário root do MySQL.</p>
<pre class="remontti-code">CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA-SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Importamos as tabelas para nosso banco de dados, a cado comando será solicitado senha so usuário mysql radius (SUA-SENHA).</p>
<pre class="remontti-code"># mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/schema.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/nas.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/ippool.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/cui.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/wimax.sql</pre>
<p>Entramos no diretório onde o FreeRadius tem seus arquivos de configuração.</p>
<pre class="remontti-code"># cd /etc/freeradius</pre>
<p>Antes de editar o radiusd.conf crie um backup do mesmo, farei o mesmo em todos os arquivos que irei editar, assim temos um backup caso cometer algum erro.</p>
<pre class="remontti-code"># cp radiusd.conf radiusd.conf.orig
# vim radiusd.conf</pre>
<p><strong>Descomente</strong></p>
<pre class="remontti-code">
[...]
  &lt;font color=&quot;blue&quot;&gt;ipv6addr = ::&lt;/font&gt;
[...]
  &lt;font color=&quot;blue&quot;&gt;$INCLUDE sql.conf&lt;/font&gt;
[...]
  &lt;font color=&quot;blue&quot;&gt;$INCLUDE sqlippool.conf&lt;/font&gt;
[...]</pre>
<p>Se deseja ter logs mais detalhados altere os valores abaixo para yes.</p>
<pre class="remontti-code">[...]
log {
    [...]
        stripped_names = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth_badpass = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth_goodpass = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
    [...]
}
[...]
</pre>
<pre class="remontti-code"> # cat radiusd.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>radius.conf </strong> ficará assim:</p>
<pre class="remontti-code">prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
name = freeradius
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/${name}.pid
user = freerad
group = freerad
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
listen {
        type = auth
        ipaddr = *
        port = 0
}
listen {
        ipaddr = *
        port = 0
        type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions     = yes
extended_expressions    = yes
log {
        destination = files
        file = ${logdir}/radius.log
        syslog_facility = daemon
        stripped_names = yes
        auth = yes
        auth_badpass = yes
        auth_goodpass = yes
}
checkrad = ${sbindir}/checkrad
security {
        max_attributes = 200
        reject_delay = 1
        status_server = yes
        allow_vulnerable_openssl = no
}
proxy_requests  = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
        start_servers = 5
        max_servers = 32
        min_spare_servers = 3
        max_spare_servers = 10
        max_requests_per_server = 0
}
modules {
        $INCLUDE ${confdir}/modules/
        $INCLUDE eap.conf
        $INCLUDE sql.conf
        $INCLUDE sqlippool.conf
}
instantiate {
        exec
        expr
        expiration
        logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/</pre>
<pre class="remontti-code"># cp sql.conf sql.conf.orig
# vim sql.conf</pre>
<p><strong>Alterar</strong><br />
<font color="blue"><em>password =</em> <strong>"SUA-SENHA"</strong></font></p>
<p><strong>Descomente</strong><br />
<font color="blue"><em>readclients = yes</em></font></p>
<pre class="remontti-code"># cat sql.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>sql.conf</strong> ficará assim:</p>
<pre class="remontti-code">
sql {
        database = &quot;mysql&quot;
        driver = &quot;rlm_sql_${database}&quot;
        server = &quot;localhost&quot;
        login = &quot;radius&quot;
        password = &quot;MINHA-SENHA&quot;
        radius_db = &quot;radius&quot;
        acct_table1 = &quot;radacct&quot;
        acct_table2 = &quot;radacct&quot;
        postauth_table = &quot;radpostauth&quot;
        authcheck_table = &quot;radcheck&quot;
        authreply_table = &quot;radreply&quot;
        groupcheck_table = &quot;radgroupcheck&quot;
        groupreply_table = &quot;radgroupreply&quot;
        usergroup_table = &quot;radusergroup&quot;
        deletestalesessions = yes
        sqltrace = no
        sqltracefile = ${logdir}/sqltrace.sql
        num_sql_socks = ${thread[pool].max_servers}
        connect_failure_retry_delay = 60
        lifetime = 0
        max_queries = 0
        readclients = yes
        nas_table = &quot;nas&quot;
        $INCLUDE sql/${database}/dialup.conf
}</pre>
<pre class="remontti-code"># cd /etc/freeradius/sites-available
# cp inner-tunnel  inner-tunnel.orig
# vim inner-tunnel</pre>
<p><strong>Descomente os sql encontrado em authorize/session/post-auth </strong></p>
<pre class="remontti-code">&lt;em&gt;authorize {
        [...]
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
        [...]
}
[...]
session {
         &lt;font color=&quot;red&quot;&gt;#radutmp&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}
post-auth {
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}&lt;/em&gt;</pre>
<p><strong>Comente</strong></p>
<pre class="remontti-code">&lt;em&gt;&lt;font color=&quot;red&quot;&gt;#       Post-Auth-Type REJECT {
#               # log failed authentications in SQL, too.
##              sql
#               attr_filter.access_reject
#       }&lt;/em&gt;&lt;/font&gt;</pre>
<pre class="remontti-code"># cat /etc/freeradius/sites-available/inner-tunnel  |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>inner-tunne</strong> ficará assim:</p>
<pre class="remontti-code">
server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
        chap
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
                ok = return
        }
        files
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        unix
        eap
}
session {
        sql
}
post-auth {
        sql
}
pre-proxy {
}
post-proxy {
        eap
}
</pre>
<pre class="remontti-code"># cp default default.orig
# vim default</pre>
<p><strong>Comente / Descomente</strong></p>
<pre class="remontti-code">&lt;em&gt;authorize {
	&lt;font color=&quot;red&quot;&gt;#digest
	#suffix
	#files&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}</pre>
<p><strong>Comente:</strong></p>
<pre class="remontti-code">authenticate {
        &lt;font color=&quot;red&quot;&gt;#digest
        #unix&lt;/font&gt;
}
preacct {
        &lt;font color=&quot;red&quot;&gt;#suffix
        #files&lt;/font&gt;
}&lt;/em&gt;</pre>
<p><strong>Comente / Descomente / inclua abaixo de sql sqlippool</strong></p>
<pre class="remontti-code">&lt;em&gt;accounting {
        &lt;font color=&quot;red&quot;&gt;#detail&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql 
        &lt;b&gt;sqlippool&lt;/b&gt;&lt;/font&gt;
        &lt;font color=&quot;red&quot;&gt;#exec
        #attr_filter.accounting_response&lt;/font&gt;
}
session {
	&lt;font color=&quot;red&quot;&gt;#radutmp&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}

post-auth {
        &lt;font color=&quot;blue&quot;&gt;sql 
        sqlippool&lt;/font&gt;
&lt;font color=&quot;red&quot;&gt;
        #exec
#       Post-Auth-Type REJECT {
#               # log failed authentications in SQL, too.
##              sql
#               attr_filter.access_reject
#       }&lt;/font&gt;
}&lt;/em&gt;</pre>
<pre class="remontti-code"># cat /etc/freeradius/sites-available/default  |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>default </strong>ficará assim:</p>
<pre class="remontti-code">
authorize {
        preprocess
        chap
        mschap
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        eap
}
preacct {
        preprocess
        acct_unique
}
accounting {
        sql
        sqlippool
}
session {
        sql
}
post-auth {
        sql
        sqlippool
}
pre-proxy {
}
post-proxy {
        eap
}</pre>
<p>Habilite o control-socket</p>
<pre class="remontti-code"># cd /etc/freeradius/sites-enabled
# ln -s ../sites-available/control-socket</pre>
<p><strong>SQLIPOOL</strong><br />
https://wiki.freeradius.org/modules/Rlm_sqlippool</p>
<p>Como dito este é um cenário bem tipico de provedores, então vou usar o modulo sqlipool para deixar meus blocos de IPs diretamente no banco de dados, assim temos um aproveitamento de 100% dos IPs, ainda mais com o esgotamenteo de IPv4 no mundo.<br />
IMPORTANTE: Esse formato pode gerar problemas, um deles é a duplicidade de IPs em sua rede, isso acontece se você tiver varios Servidores PPPoE/Hotspot (se bem que em hotspot eu não usaria), espalhados na sua rede, caso haja alguma interrupção entre seu PPPoE Server e o Freeradius, o Freeradius poderá liberar o IP da da tabela radippool, e assim algum outro PPPoE Sever acabar alocando o mesmo. Então tome cuidado. Eu particularmente usei um script que em caso o Servidor PPPoE perder comunicação com o Servidor Freeradius ele desconecta todos os usuários conectados, assim quando voltar a comunicação seja feito uma nova conexão aos clientes. </p>
<pre class="remontti-code"># vim /etc/freeradius/sqlippool.conf</pre>
<p>Altere<br />
<font color="red">$INCLUDE sql/postgresql/ippool.conf</font><br />
Por<br />
<font color="blue">$INCLUDE sql/mysql/ippool.conf</font></p>
<p>Este é um valor que você pode trabalhar caso tenha algum problema (eu uso o padrão)<br />
<font color="blue">## IP lease duration. (Leases expire even if Acct Stop packet is lost)<br />
lease-duration = 3600</font></p>
<p>Para evitar duplicidade uso o MAC com key (Pois as NAS-port pode se repetir quando se tem mais de um PPPoE Serv)<br />
Comente:<br />
<font color="red">#pool-key = "%{NAS-Port}"</font><br />
Descomente:<br />
<font color="blue">pool-key = "%{Calling-Station-Id}"</font></p>
<p>Como é bem possível que seu servidor não autentique apenas usuários pppoe ou hotspot, para não termos cada vez que por exemplo um autenticação wireless psk/eap aparece o log que não foi definido uma pool, eu comentei:<br />
<font color="red">#sqlippool_log_nopool = "No Pool-Name defined \<br />
# (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"</font></p>
<pre class="remontti-code"># cat sqlippool.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>sqlippool.conf</strong> ficará assim:</p>
<pre class="remontti-code">sqlippool {
 sql-instance-name = &quot;sql&quot;
 ippool_table = &quot;radippool&quot;
 lease-duration = 3600
 pool-key = &quot;%{Calling-Station-Id}&quot;
$INCLUDE sql/mysql/ippool.conf
 sqlippool_log_exists = &quot;Existing IP: %{reply:Framed-IP-Address} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 sqlippool_log_success = &quot;Allocated IP: %{reply:Framed-IP-Address} from %{control:Pool-Name} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 sqlippool_log_clear = &quot;Released IP %{Framed-IP-Address}\
 (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})&quot;
 sqlippool_log_failed = &quot;IP Allocation FAILED from %{control:Pool-Name} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 #sqlippool_log_nopool = &quot;No Pool-Name defined \
 # (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
}</pre>
<p>Umas das alterações que acho interessante alterar no ippool, é para que a cada nova alocação de IP ela seja randômica, isso pode solucionar alguns problemas como o daqueles clientes que jogam online, que fazem download, que estão sendo atacados, que ao reiniciar seu equipamento o mesmo irá receber um novo IP. Para isso vamos  editar o /etc/freeradius/sql/mysql/ippool.conf</p>
<pre class="remontti-code"># vim /etc/freeradius/sql/mysql/ippool.conf</pre>
<p>Comente</p>
<pre class="remontti-code">
### The ORDER BY clause of this query tries to allocate the same IP-address
### which user had last session...
&lt;font color=&quot;red&quot;&gt;#allocate-find = &quot;SELECT framedipaddress FROM ${ippool_table} \
# WHERE pool_name = &#039;%{control:Pool-Name}&#039; AND (expiry_time &lt; NOW() OR expiry_time IS NULL) \
# ORDER BY (username &lt;&gt; &#039;%{User-Name}&#039;), \
# (callingstationid &lt;&gt; &#039;%{Calling-Station-Id}&#039;), \
# expiry_time \
# LIMIT 1 \
# FOR UPDATE&quot;&lt;/font&gt;</pre>
<p>Descomente</p>
<pre class="remontti-code">### If you prefer to allocate a random IP address every time, i
### use this query instead
&lt;font color=&quot;blue&quot;&gt;allocate-find = &quot;SELECT framedipaddress FROM ${ippool_table} \
 WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
 AND expiry_time IS NULL \
 ORDER BY RAND() \
 LIMIT 1 \
 FOR UPDATE&quot;&lt;/font&gt;</pre>
<p><strong>COUNTER</strong></p>
<p>Modulo counter é legal para criar alguns cenários de hotspot, ode você deseja limitar o tempo de conexão. Exemplo limitar que um usuário tenha acesso apenas durante 2h por dia/mês/único... E com um pouco de trabalho e personalização no /etc/freeradius/sql/mysql/counter.conf você consegue personalizar para contabilizar até mesmo tráfego de dados. </p>
<p>Caso você deseje habilitar-lo faça o seguinte:</p>
<pre class="remontti-code"># vim radius.conf</pre>
<p><strong>Descomenta </strong></p>
<pre class="remontti-code">modules {
[...]
       &lt;font color=&quot;blue&quot;&gt;$INCLUDE sql/mysql/counter.conf&lt;/font&gt;
[...]
}</pre>
<p><strong>Adicione</strong></p>
<pre class="remontti-code">instantiate {
[...]&lt;font color=&quot;blue&quot;&gt;
        # Habilite o mesmo no inner-tunnel
        # Modulos em  /etc/freeradius/sql/mysql/counter.conf
        dailycounter
        monthlycounter
        noresetcounter&lt;/font&gt;
[...]
}</pre>
<pre class="remontti-code"># vim /etc/freeradius/sites-available/inner-tunnel</pre>
<p><strong>Adicione abaixo de sql</strong></p>
<pre class="remontti-code">
authorize {
[...]
        sql
&lt;font color=&quot;blue&quot;&gt;
        #Mod Counter
        noresetcounter
        dailycounter
        monthlycounter&lt;/font&gt;
[...]
}</pre>
<pre class="remontti-code"># vim /etc/freeradius/sites-available/default</pre>
<p><strong>Adicione abaixo de sql</strong></p>
<pre class="remontti-code">authorize {
[...]
        sql
&lt;font color=&quot;blue&quot;&gt;
        noresetcounter
        dailycounter
        monthlycounter&lt;/font&gt;
[...]
}</pre>
<p>Corrigindo um bug. Acerte o nome da tabela (AcctSessionTime ==> acctsessiontime)</p>
<pre class="remontti-code"># vim /etc/freeradius/sql/mysql/counter.conf</pre>
<pre class="remontti-code">&lt;strong&gt;Altere&lt;/strong&gt;
&lt;font color=&quot;red&quot;&gt;query = &quot;SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName=&#039;%{%k}&#039;&quot;&lt;/font&gt;
&lt;strong&gt;Para&lt;/strong&gt;
&lt;font color=&quot;blue&quot;&gt;query = &quot;SELECT IFNULL(SUM(&lt;strong&gt;acctsessiontime&lt;/strong&gt;),0) FROM radacct WHERE username=&#039;%{%k}&#039;&quot;&lt;/font&gt;</pre>
<p><strong>ALIMENTANDO NOSSA BASE DE DADOS </strong></p>
<p>Inicialmente eu particularmente não gosto da ideia da radusergroup não ter uma ID então para alterar isso faça. (Se desejar)</p>
<pre class="remontti-code"># mysql -u radius -p</pre>
<p>Entre com SUA-SENHA do radius no MySQL.</p>
<pre class="remontti-code">
USE radius;
ALTER TABLE `radusergroup` ADD `id` INT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
ALTER TABLE `radusergroup` ADD UNIQUE(`id`);
</pre>
<p>Agora vamos inserir alguns valores na nossa base de dados com alguns exemplos que explicarei no decorrer.<br />
Se você preferir pode usar os comando mysql direto no PHPMyAdmin.</p>
<p>Primeiramente precisamos de um cenário de rede para montar nossas configurações.<br />
<strong>FreeRadius:</strong> 250.250.0.10<br />
<strong>RB/RouterOS HotSpot:</strong> 250.250.1.2<br />
<strong>RB/RouterOS PPPoE:</strong> 250.250.1.3 / 10.10.0.1<br />
<strong>UBNT AP:</strong> 10.10.0.2</p>
<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto.png" alt="" width="884" height="575" class="alignnone size-full wp-image-1713" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto.png 884w, https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto-768x500.png 768w" sizes="(max-width: 884px) 100vw, 884px" /></p>
<p>Note que nosso UBNT não está na mesma classe de IPs do FreeRadius, então possivelmente sua rede deve ter configurado algum tipo roteamento como OSPF / iBGP, que faça com que seu AP vs FreeRadius consiga comunicação. Caso exista um NAT para seu AP explicarei o que munda em seguida.</p>
<p><strong>TABELAS</strong></p>
<p><strong>• nas</strong><br />
A tabela NAS contém dados sobre (radius clientes) e é uma "substituição" para o arquivo clients.conf. É muito mais fácil manter os clientes no banco de dados do que dentro do arquivo de configuração. Ou seja, sua RB/RouterOS e seu UBNT AP são clientes, são eles que irão fazer consultas em nosso servidor. Para devemos autorizá-los inserindo na tabela nas:</p>
<pre class="remontti-code">
INSERT INTO `nas` (`nasname`, `shortname`, `type`, `ports`, `secret`, `server`, `community`, `description`) VALUES
(&#039;250.250.1.2&#039;, &#039;RB-RouterOS-PPPoE&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;RouterOS PPPoE&#039;),
(&#039;250.250.1.3&#039;, &#039;RB-RouterOS-HotSpot&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;RouterOS HotSpot&#039;),
(&#039;10.10.0.2&#039;, &#039;UBNT-AP&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;POP1&#039;);
</pre>
<p>Depois de adicionar, editar ou apagar dados da tabela nas é necessário reiniciar o serviço FreeRadius para atualizar os dados.</p>
<pre class="remontti-code"># /etc/init.d/freeradius restart</pre>
<p><strong>• radcheck </strong>- Armazena os registo de cada utilizador com os respectivos atributos associados;<br />
<strong>• radgroupcheck</strong> – Associa atributos a um determinado grupo de utilizadores;<br />
<strong>• radgroupreply</strong> – Armazena os atributos que são devolvidos a todos os utilizadores de um grupo;<br />
<strong>• radusergroup</strong> - Associa um utilizador a um grupo de utilizadores;<br />
<strong>• radreply</strong> – Contém lista de atributos enviados ao utilizador;<br />
<strong>• radpostauth</strong> – Armazena informações acerca das respostas enviadas para os utilizadores;<br />
<strong>• radacct</strong> - Se encontra toda a informação de contabilização (extrato);</p>
<p>Vamos criar algumas configurações padrões, "nossos planos". Lembre-se que os atributos especificados não são necessariamente os mesmos, dependendo do seu cenário, uma boa alternativa é você rodar o freeradius em modo debug (# freeradius -X), e visualizar quais os valores estão vindo, assim você pode observar o que cada autenticação esta lhe trazendo e assim configurando seu grupo de forma segura. Fique atento pois se você cadastrar apenas um atributo poderá estar deixando grandes falhas de segurança.</p>
<pre class="remontti-code">
INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_1&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;), /* Definimos o nome da pool de IPs*/
(&#039;PLANO_1&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;), /* Permitimos apenas uma autenticação simultânea */
(&#039;PLANO_1&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;), /* Apenas protocolo PPP então isso não server para Hotspot */
(&#039;PLANO_1&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;), /* Tipo de serviço  */
(&#039;PLANO_2&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;PLANO_2&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;PLANO_2&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;PLANO_2&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;AVISO&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;avisoPool&#039;),
(&#039;AVISO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;AVISO&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;AVISO&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;BLOQUEIO&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;bloqPool&#039;),
(&#039;BLOQUEIO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;BLOQUEIO&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;BLOQUEIO&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;PLANO_HOT&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;PLANO_HOT(naonecessariamente)&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;poolHot&#039;),
(&#039;PLANO_HOT&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;30MIN-DIA&#039;, &#039;Max-Daily-Session&#039;, &#039;:=&#039;, &#039;1800&#039;), /* Modulo counter */
(&#039;30MIN-DIA&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;30MIN-DIA&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;2h-UNICO&#039;, &#039;Max-All-Session&#039;, &#039;:=&#039;, &#039;7200&#039;),
(&#039;2h-UNICO&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;2h-UNICO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;7.5h-MES&#039;, &#039;Max-Monthly-Session&#039;, &#039;:=&#039;, &#039;27000&#039;),
(&#039;7.5h-MES&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;7.5h-MES&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;);

INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_1&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;), /* Intervalo em seg que a radcct será atualizada */
(&#039;PLANO_1&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024k/2048k&#039;), /* Velocidade da queues */
(&#039;PLANO_2&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;512k/1024k 1024k/2048k 512k/1024k 600/600&#039;), /* Velocidade com Burst */
(&#039;PLANO_2&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;AVISO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;AVISO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;999K/999K&#039;),
(&#039;BLOQUEIO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;999K/999K&#039;),
(&#039;BLOQUEIO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;PLANO_HOT&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;PLANO_HOT&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;30MIN-DIA&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;30MIN-DIA&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;2h-UNICO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;2h-UNICO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;7.5h-MES&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;7.5h-MES&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;);
</pre>
<p>Criamos alguns planos para atribuir aos nossos usuários PPPoE e Hotspot. Vamos aos nossos usuários:</p>
<pre class="remontti-code">
INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
/*Autenticacao de um cliente CPE UBNT WIFI WPA2 EAP */
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;00:11:22:33:44:55&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;001122334455&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;minhasenha&#039;),
(&#039;001122334455&#039;, &#039;Auth-Type&#039;, &#039;==&#039;, &#039;EAP&#039;),

/*Autenticacao de um cliente CPE UBNT 2.4 vs WIFI WPA/WPA2 PSK RouterOS */
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;55:44:33:22:11:00&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;55:44:33:22:11:00&#039;, &#039;Auth-Type&#039;, &#039;:=&#039;, &#039;Accept&#039;),
(&#039;55:44:33:22:11:00&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;);

INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;55:44:33:22:11:00&#039;, &#039;Mikrotik-Wireless-PSK&#039;, &#039;:=&#039;, &#039;senha-psk&#039;);
/* A senha PSK fica na radreply */
</pre>
<p>E por fim vamos alimentar nossa tabela de ippool, como nossos IPs que serão entregue. No cenário fiz 3 pool, <strong>minhapool </strong>ounde vão ficar os IPs válidos, <strong>avisoPool </strong>que receberão um bloco de ips diferenciado, por ex. para direcionar os clientes para algum tipo de aviso. E <strong>bloqPool </strong>para clientes que ficarão bloqueado. </p>
<pre class="remontti-code">
INSERT INTO `radippool` (`pool_name`, `framedipaddress`, `nasipaddress`, `calledstationid`, 
`callingstationid`, `expiry_time`, `username`, `pool_key`) VALUES
(&#039;minhapool&#039;, &#039;100.64.0.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;);
</pre>
<p>Ainda pode fixar algumas configurações especificadamente ao usuário, vamos a alguns exemplos.</p>
<pre class="remontti-code">
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;usuario@dominio.com.br&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;2000k/4000k&#039;), /* Setando velocidade */
(&#039;usuario@dominio.com.br&#039;, &#039;Framed-IP-Address&#039;, &#039;:=&#039;, &#039;250.250.0.150&#039;), /* Setando IP Fixo */
(&#039;usuario@dominio.com.br&#039;, &#039;Framed-IPv6-Prefix&#039;, &#039;:=&#039;, &#039;2001:db8:A:B::/64&#039;), /* IPv6 &quot;Wan&quot; */
(&#039;usuario@dominio.com.br&#039;, &#039;Mikrotik-Delegated-IPv6-Pool&#039;, &#039;:=&#039;, &#039;2001:db8:C::/56&#039;); /* IPv6 &quot;Lan&quot; */
</pre>
<p><strong>Configuração Simples do PPPoE Server no RouterOS (Mikrotik)</strong></p>
<pre class="remontti-code">
/interface pppoe-server server
add authentication=pap,chap disabled=no interface=ether1 keepalive-timeout=30 max-mru=1480 \
 max-mtu=1480 one-session-per-host=yes service-name=PPPoE-Server

/ppp profile
set *0 change-tcp-mss=default dns-server=250.250.0.2,250.250.0.3 local-address=250.250.0.10 

/ppp aaa
set interim-update=5m use-radius=yes

/radius
add address=250.250.250.2 secret=&quot;SEU-SECRET&quot; service=ppp,hotspot,wireless

####################
### Wireless PSK ###
####################
/interface wireless security-profiles
add authentication-types=wpa2-psk management-protection=allowed mode=dynamic-keys name=WPA2 \ 
 radius-mac-authentication=yes wpa2-pre-shared-key=3n20oXOPjohONpEK

/interface wireless
set [ find default-name=wlan1 ] security-profile=WPA2
</pre>
<p><strong>Configuração UBNT AP</strong> (10.10.0.2)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt.png" data-rel="lightbox-gallery-YM8lC510" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-300x266.png" alt="" width="300" height="266" class="alignnone size-medium wp-image-1715" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-300x266.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-768x680.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt.png 811w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Configuração UBNT Cliente EAP</strong> 5.8Mhz<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2.png" data-rel="lightbox-gallery-YM8lC510" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-300x248.png" alt="" width="300" height="248" class="alignnone size-medium wp-image-1716" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-300x248.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-768x634.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2.png 808w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt.png" data-rel="lightbox-gallery-YM8lC510" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-300x294.png" alt="" width="300" height="294" class="alignnone size-medium wp-image-1717" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-300x294.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-768x752.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt.png 804w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Configuração UBNT Cliente PSK</strong> 2.4Mhz Conectando no Cartão do MK<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3.png" data-rel="lightbox-gallery-YM8lC510" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-300x218.png" alt="" width="300" height="218" class="alignnone size-medium wp-image-1720" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-300x218.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-768x558.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3.png 810w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Fontes:</strong><br />
<em>https://wiki.freeradius.org/guide/SQL-HOWTO<br />
https://wiki.freeradius.org/modules/Rlm_sql<br />
https://wiki.freeradius.org/modules/Rlm_sqlippool<br />
https://wiki.freeradius.org/modules/Rlm_sqlcounter</em><br />
https://www.draw.io/ (Gráficos)</p>
<p>O post <a href="https://blog.remontti.com.br/1651">Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1651/feed</wfw:commentRss>
			<slash:comments>30</slash:comments>
		
		
			</item>
		<item>
		<title>Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</title>
		<link>https://blog.remontti.com.br/1485</link>
					<comments>https://blog.remontti.com.br/1485#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 30 Jan 2017 20:35:21 +0000</pubDate>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[debian jessie]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[PostfixAdmin]]></category>
		<category><![CDATA[Quota]]></category>
		<category><![CDATA[Roudcube Webmail]]></category>
		<category><![CDATA[RoundCubeMail]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SPF]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1485</guid>

					<description><![CDATA[<p>Um novo tutorial mais atualizado em: https://blog.remontti.com.br/3744 Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MySQL. &#8211; Postfix para nosso MTA.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1485">Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-1024x486.jpg" alt="post-emails" width="1024" height="486" class="alignnone size-large wp-image-1487" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-1024x486.jpg 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails.jpg 1054w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h1><a href="https://blog.remontti.com.br/3744"><font color=red>Um novo tutorial mais atualizado em: https://blog.remontti.com.br/3744</font></a></h1>
<p>Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MySQL.<br />
&#8211; Postfix para nosso MTA.<br />
&#8211; Dovecot como servidor Imap e Pop.<br />
&#8211; Postfixadmin para o gerenciamento de contas de Emails e domínios<br />
&#8211; Spamassassin, Clamav e o Amavis para controle de Anti-Spam e Anti-Vírus<br />
&#8211; RoundCubeMail para Webmail</p>
<p>OBS: Não vou entrar em muitos detalhes, pois o tuto já ficou bem longo. E desculpe pelos erros de portuga, mas vou fazendo na corrida.</p>
<h4>CENÁRIOS</h4>
<p>IP: 250.250.0.6 / 2000:fff:250:250:0::6<br />
Reverso sobre os IPS 250.250.0.6 / 2000:fff:250:250:0::6: mail.dominiorev.com.br<br />
Domínios virtuais: remontti.com.br / dominiorev.com.br / você pode ter diversos</p>
<h4>REQUISITOS</h4>
<p>1 &#8211; Ter configurado <a href="https://blog.remontti.com.br/1397" target="_blank" rel="noopener noreferrer">DNS Autoritativo e Reverso sobre seus IPS</a>. (Não necessariamente no mesmo servidor)<br />
2 &#8211; Debian 8 Jessie recomendo uma <a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">instalação limpa do Debian</a><br />
3 &#8211; <a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Serviço Web Rodando</a><br />
4 &#8211; Servidor Atualizado: # apt update &#038;&#038; apt upgrade</p>
<h4>AJUSTES</h4>
<p>Ajuste o nome do servidor alterando alguns parâmetros do sistema.</p>
<pre class="remontti-code"># vim /etc/hosts</pre>
<pre class="remontti-code">
127.0.0.1       localhost
250.250.250.6     mail.dominiorev.com.br    mail
{...}
</pre>
<pre class="remontti-code"># vim /etc/hostname</pre>
<pre class="remontti-code">
mail
</pre>
<p>Configure sua interface de rede. Vou deixar um modelo, onde o bloco de IPv4 é um /28 (255.255.255.240) e um /64 para IPv6. Estou usando IPs com base no cenário apresentado no tutorial [<a href="https://blog.remontti.com.br/1397" target="_blank" rel="noopener noreferrer">Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6)</a>]</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code">
auto eth0
iface eth0 inet static
        address 250.250.0.6
        netmask 255.255.255.240
        network 250.250.0.0
        broadcast 250.250.0.15
        gateway 250.250.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 250.250.0.2
        dns-search ns1.dominiorev.com.br

#v6
iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2000:fff:250:250:0::6
        netmask 64
        gateway 2000:fff:250:250:0::1
</pre>
<p>Reinicie seu servidor</p>
<pre class="remontti-code"> # reboot</pre>
<p>OBS: Lembrando que a rota default é entregue via route advertise, então se você não estiver entregando desta forma será necessários criar uma rota estática, no Debian você pode adicionar o seguinte parâmetro em /etc/rc.local ( <b>ip -6 route add ::/0 via 2000:fff:250:250:0::1</b> ) assim toda vez que o sistema inicializar sua rota default (gateway) IPv6 é configurada é configurado.</p>
<h4>POSTFIX / DOVECOTE</h4>
<p>O Postfix é um agente de transferência de emails (MTA = Message Transfer Agent), um software livre para envio e entrega de emails. Rápido e fácil de administrar, muito utilizado em servidores UNIX.<br />
Algumas vantagens:<br />
&#8211; Suporte a Ipv6<br />
&#8211; Suporte a MIME<br />
&#8211; Autenticação SASL<br />
&#8211; Canal seguro utilizando TLS<br />
&#8211; Suporte a banco de dados(MySQL,PostgreSQL,LDAP,entre outros)<br />
&#8211; Verificação a listas RBL<br />
&#8211; Extenso suporte a filtros<br />
&#8211; Suporte a expressão-regular<br />
&#8211; Verificação de cabeçalho<br />
&#8211; Verificação no corpo da mensagem<br />
&#8211; Suporte a Greylisting e SPF através de plugins.</p>
<p>Dovecot é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente, tem o objetivo primário de ser um servidor de email leve, rápido e de fácil configuração. Dovecot suporta mbox, Maildir e seu próprio formato nativo de alta performance, Dbox. É 100% compatível com clientes de emails acessando as caixas de correio diretamente. Também inclui um agente de entrega de emails com suporte opcional a filtros Sieve, o que acho muito legal!</p>
<p>Vamos a instalação, não esqueça de antes ter instalado <a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Serviço Web</a> </p>
<pre class="remontti-code"># apt update &amp;&amp; apt upgrade
# apt install dovecot-common dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd postfix postfix-mysql openssl php5-imap dovecot-sieve dovecot-managesieved</pre>
<p>Responda:<br />
<strong>Site da Internet</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-300x157.png" alt="screenshot_20161017_125641" width="300" height="157" class="alignnone size-medium wp-image-1489" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-768x403.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-1024x537.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641.png 1190w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Se seu DNS reverso estiver ok ele virá já com o domínio reverso de seu IP, mas isso não é necessariamente ser o nome do ip rever, mas eu recomendo que tenha confurado o reverso para o seu servidor de e-mail.<br />
<strong>mail.dominiorev.com.br</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-300x157.png" alt="screenshot_20161017_125730" width="300" height="157" class="alignnone size-medium wp-image-1490" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-768x402.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-1024x536.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730.png 1189w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Verifique o arquivo /etc/mailname e sertifique-se que seja seu domínio.</p>
<pre class="remontti-code"># vim /etc/mailname</pre>
<pre class="remontti-code">mail.dominiorev.com.br</pre>
<p>Restarte o apache pois instalamos o pacote php5-imap</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>Adicione um e-mail para seu usuário root do Linux</p>
<pre class="remontti-code"># vim /etc/aliases</pre>
<pre class="remontti-code">root: postmaster@dominiorev.com.br</pre>
<pre class="remontti-code"># newaliases</pre>
<h4>POSTFIXADMIN</h4>
<p>Instalaremos nosso PostfixAdmin para gerenciar nossos dominios e e-mail.<br />
Inicialmente vamos criar nosso banco de dados MySQL.<br />
<strong>Não esqueça de alterar a SENHA.</strong></p>
<pre class="remontti-code"># mysql -uroot -p -e &quot;CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO &#039;postfix&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;&lt;strong&gt;SENHA&lt;/strong&gt;&#039;;&quot;</pre>
<p>Será solicitado a senha do usuários root do mysql.</p>
<p>Vamos baixar o PostfixAdmin, hoje (Jan 2017) o projeto está em sua versão 3.0 <a href="https://sourceforge.net/projects/postfixadmin/" target="_blank" rel="noopener noreferrer">https://sourceforge.net/projects/postfixadmin/</a>. Vou baixa-lo no diretório padrão do Apache2, faça de acordo com o seu cenário. Após vou extrai-lo, renomeá-lo e setar as permissões necessárias.</p>
<pre class="remontti-code"># cd /var/www/html/
# wget --no-check-certificate --content-disposition http://sourceforge.net/projects/postfixadmin/files/latest/download?source=files
# tar xfvz postfixadmin-*.tar.gz
# mv postfixadmin*/ postfixadmin
# chown www-data:www-data -R postfixadmin
# cd postfixadmin
# cp config.inc.php config.inc.php.orig
</pre>
<p>Editamos o config.inc.php para fazer algumas alterações e conectar com nosso banco de dados.</p>
<pre class="remontti-code"># vim config.inc.php</pre>
<p>Procure pelas seguintes linhas e altere conforme a baixo.</p>
<pre class="remontti-code">
$CONF[&#039;configured&#039;] = true;
$CONF[&#039;default_language&#039;] = &#039;pt-br&#039;;

$CONF[&#039;database_type&#039;] = &#039;mysql&#039;;
$CONF[&#039;database_host&#039;] = &#039;localhost&#039;;
$CONF[&#039;database_user&#039;] = &#039;postfix&#039;;
$CONF[&#039;database_password&#039;] = &#039;SENHA&#039;;
$CONF[&#039;database_name&#039;] = &#039;postfix&#039;;

# Defina o tipo de criptografia para as senhas salvas no BD.
$CONF[&#039;encrypt&#039;] = &#039;md5&#039;;
</pre>
<pre class="remontti-code"># cp config.inc.php config.local.php</pre>
<p>Como existe varias alterações <i>&#8220;change-this-to-your.domain.tld&#8221;</i> vou usar o comando sed para alterar todas de uma única vez. <strong>Não esqueça de substituir pelo seu dominio.</strong></p>
<pre class="remontti-code"># sed -i &#039;s/change-this-to-your.domain.tld/dominiorev.com.br/&#039; config.inc.php</pre>
<p>Acesse:<br />
<strong>http://SEU-DOMINO/postfixadmin/setup.php</strong></p>
<p>No primeiro acesso suas tabelas já serão criadas no seu bd, você deve ter todas as dependências <strong>OK</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-201x300.png" alt="screenshot_20161017_132809" width="201" height="300" class="alignnone size-medium wp-image-1492" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-201x300.png 201w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-768x1147.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-686x1024.png 686w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809.png 1100w" sizes="auto, (max-width: 201px) 100vw, 201px" /></a></p>
<p>Se deparar com o erro: <em><font color="blue">&#8220;ERROR: the templates_c directory doesn&#8217;t exist or isn&#8217;t writeable for the webserver&#8221;</em></font> crie o diretório templates_c com <strong># mkdir templates_c &#038;&#038; chown www-data. templates_c</strong></p>
<p>Bem no final temos: <strong>Change setup password</strong><br />
Preencha os campos Setup password com uma senha e repita (Essa senha será necessária pra criar administradores do PostfixAdmin) e clique em <strong>Generate password hash</strong></p>
<p>Voce vai receber uma mensagem parecida com essa:<br />
<font color="red"><i>If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set<br />
$CONF[&#8216;setup_password&#8217;] = &#8216;ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5&#8217;; </i></font><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png" alt="screenshot_20161017_134710" width="300" height="58" class="alignnone size-medium wp-image-1497" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-768x148.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png 786w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Esta senha criptografada, será necessários informar no arquivo config.inc.php antes de prosseguir. Então vamos a edição.</p>
<pre class="remontti-code"># vim  config.inc.php</pre>
<p>Localize:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;changeme&#039;;</pre>
<p>Altere para:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5&#039;;</pre>
<p>Salve se arquivo e volte para seu navegador. Em <strong>Create superadmin account</strong> vamos criar nosso usuário administrador do PostfixAdmin.</p>
<p>Nos campos:<br />
<strong>Setup password</strong> = Informe a senha q você gerou no passo anterior.<br />
<strong>Administrador:</strong> = um endereço email que será o seu login (postmaster@dominiorev.com.br)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png" alt="screenshot_20161017_134743" width="300" height="161" class="alignnone size-medium wp-image-1498" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-768x413.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png 779w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Clique em <strong>Criar administrador</strong></p>
<p>Deve retornar a mensagem:</p>
<pre class="remontti-code">
	Administrador criado! (postmaster@dominiorev.com.br)
	You are done with your basic setup.

	You can now login to PostfixAdmin using the account you just created.
</pre>
<p>Agora por segurança vamos acessar nosso diretório do postfixadmin (/var/www/html/postfixadmin) e renomear o arquivo setup.php</p>
<pre class="remontti-code"># mv setup.php QLQRNOME_setup.php</pre>
<p>Acesse: http://SEU-DOMINO/postfixadmin/</p>
<p>Já é possível acessa-lo com nosso usuários administrador, e adicionar seus domínios e contas de e-mails.<br />
Domínios => Criar  Domínio<br />
Virtual => Criar conta de Email</p>
<p>Dado continuidade criaremos nosso usuários vmail que será o &#8220;cara&#8221; responsável pelo trabalho.</p>
<pre class="remontti-code"># groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail
# mkdir /var/vmail
# chown vmail:vmail /var/vmail</pre>
<p>Edite o arquivo /etc/postfix/main.cf</p>
<pre class="remontti-code"># cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf</pre>
<p>Altere e adicione como descrito abaixo.</p>
<pre class="remontti-code">
#--------ALTERE--------#
smtpd_banner = $myhostname
myorigin = $myhostname
mydestination = localhost

#--------COMENTE--------#
#relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_size_limit = 0

#--------ADD AO FINAL--------#

# Authentification
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
broken_sasl_auth_clients = yes

# Virtual mailboxes
local_transport = virtual
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 104
virtual_transport = virtual
#virtual_transport = dovecot ????????/ ql ?
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
dovecot_destination_recipient_limit = 1

###### EXTRAS COMENTADO #######
# Tamanho maximo do anexo (21 MB)
# No webmail php deve permitir upar esse tamanho
message_size_limit = 22020096

# Um pouco mais de  protecao contra spam
disable_vrfy_command = yes

# A RFC 821 basicamente exige que os enderecos sejam envelopados ou contidos por &lt;&gt;.
# Seguir esta regra faz com que se use essa notacao na sessao SMTP. Isso ajuda a barrar alguns Mailers.
strict_rfc821_envelopes = yes

# Caixa postal inexistente devolver aosender o erro 500,
# desta forma daqui alguns minutos voce nao precisara processar novamente o mesmo spam.
unknown_local_recipient_reject_code = 500

# E rejeitar com erro 554 enderecos desconhecidos
unknown_address_reject_code = 554

# Tambem com o erro 554 podemos rejeitar as conexoes que venham de hostnames desconhecidos
unknown_hostname_reject_code = 554

# Os cliente desconhecidos tambem rejeitaremos com o mesmo erro
unknown_client_reject_code = 554

# Vamos definir que o servidores remotos podem fazer no maximo 10
# conexõsimultaneas (e um valor que trabalho, editem conforme a necessidade).
# Um spammer faz mais de 20
smtp_destination_recipient_limit = 10

# Vamos definir que a conexao so pode cometer 3 erros de codigos 500
# (erros definitivos), apos isto sera desconectado
smtpd_hard_error_limit = 3

# Para erros de codigo 400 (erros temporarios), podemos desconecta-los na primeira
smtpd_soft_error_limit = 1

# Bom, claro que o spammer tambem pode ser desconectado e depois se reconectar,
# entao vamos nos prevenir destes espertinhos definindo quantas conexoes ele pode fazer por minuto.
smtpd_client_connection_count_limit = 10

# Nestas conexoes vamos limitar quantas mensagens ele pode mandar por minuto,
# no meu caso uso 25. Se algum usuario seu reclamar deste limite,
# classifique-o como ninja ou na pior hipotese, um mail maniaco.
smtpd_client_message_rate_limit = 25

# Deixar um spammer maluco e faze-lo perder tempo. Dificilmente um servidor conectado
# ao seu servidor vai cometer erros, os spammer cometem muitos erros, pois eles ficam tentando.
# Para irrita-los e quem sabe um dia desistirem de mim, eu travo eles dentro do meu servidor a cada erro.
# No meu caso, a cada erro eu os travo por 20 segundos. Ate que diminuiu o numero de spammers no meu servidor,
# devo estar na blacklist deles.rs
smtpd_error_sleep_time = 20

# Para este tipo de problema, os spammers podem resetar os erros deles.
# Para evitar que eles facam isto e sejam desconetados, podemos dizer se eles podem ou nao fazer isto.
# Como colher de cha, vamos deixar fazer isto apenas uma vez (ate porque servidores as vezes usam este comando).
# Permitir a maquina remota dar o comando RSET apenas 1 vez.
smtpd_junk_command_limit = 1


# Defina tambem o numero maximo de destinatarios em uma unica mensagem.
# Utilize o numero que melhor lhe convir, entreviste pessoas chaves se necessarios.
smtpd_recipient_limit = 50

# Os spammers nao se preocupam muito com isto,
# entao uma otima pratica para bloquear spams eh
# tornar a identificacao por HELO/EHLO obrigatoria.
smtpd_helo_required = yes

# Um pouco mais sobre o HELO/EHLO eh definir um tempo
# limite para o servidor fazer a identificacao, um
# servidor serio nao tem porque ficar enrolando.
# Vai diminuindo o tempo e observando os resultados.
# Vamos comecar com 60 segundos
smtp_helo_timeout = 60s

smtpd_helo_restrictions =	permit_mynetworks,
				permit_sasl_authenticated,
				reject_invalid_helo_hostname,
				reject_non_fqdn_helo_hostname,
				reject_unknown_helo_hostname,
				reject_unauth_pipelining

smtpd_sender_restrictions =	reject_non_fqdn_sender,
				reject_unknown_sender_domain,
				reject_unlisted_sender,
				reject_authenticated_sender_login_mismatch,
				permit_sasl_authenticated,
				permit_mynetworks

smtpd_recipient_restrictions =  permit_sasl_authenticated,
                                permit_mynetworks,
                                reject_unauth_destination,
                                reject_unknown_reverse_client_hostname,
                                reject_invalid_hostname,
                                reject_non_fqdn_hostname,
                                reject_non_fqdn_sender,
                                reject_non_fqdn_recipient,
                                reject_unknown_sender_domain,
                                reject_unknown_recipient_domain,
                                reject_unauth_pipelining,
                                reject_rbl_client zen.spamhaus.org,
                                reject_rbl_client bl.spamcop.net,
                                reject_rbl_client dnsbl.sorbs.net,
                                permit
</pre>
<p><strong>OBS RBLs</strong>: zen.spamhaus.org, bl.spamcop.net, dnsbl.sorbs.net<br />
Caso não queira utilizar remova os campos <i>reject_rbl_client</i> ou se desejar adicionar outras&#8230; </p>
<p>Mais informações você encontra em:<br />
http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox</p>
<p>Precisamos criar 4 arquivos que farão a conexão com o BD, pra facilitar criamos nossa variável MINHASENHA</p>
<p>Vamos criar uma variável com o valor da senha que foi criada para o usuarios postfix do mysql, assim ira facilitar.</p>
<pre class="remontti-code"># MINHASENHA=&#039;sua-senha-do-usuario-postifix-do-mysql&#039;</pre>
<p>Não use $ ou # em sua senha</p>
<p><strong>mysql_virtual_alias_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_alias_maps.cf</pre>
<p><strong>mysql_virtual_mailbox_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_mailbox_maps.cf</pre>
<p><strong>mysql_sender_login_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT username AS allowedUser FROM mailbox WHERE username=&#039;%s&#039; AND active = 1 UNION SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_sender_login_maps.cf</pre>
<p><strong>mysql_virtual_domains_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT domain FROM domain WHERE domain=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_domains_maps.cf</pre>
<p>Acesse o diretório de instalação e verifique se os arquivos com as iniciais mysql_* foram criados. Depois altere as permissões e grupos.</p>
<pre class="remontti-code"># cd /etc/postfix
# ls -lh mysql_*
# chmod o-rwx,g+r mysql_*
# chgrp postfix mysql_*</pre>
<p>Vamos as alterações no master.cf.</p>
<p>Faça um backup do arquivo original antes e adicione no final:</p>
<pre class="remontti-code"># cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
# vim /etc/postfix/master.cf</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code">
# Dovecot
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
</pre>
<p>Localize as seguintes linhas e descomente-as:</p>
<pre class="remontti-code">
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_sasl_auth_enable=yes

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
</pre>
<p>Em altere os valores de smtpd_client_restrictions, os originais são diferentes. (veja na imagem abaixo como fica)</p>
<pre class="remontti-code">
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
[...]
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png" alt="screenshot_20161017_143502" width="254" height="300" class="alignnone size-medium wp-image-1500" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png 254w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png 694w" sizes="auto, (max-width: 254px) 100vw, 254px" /></a></p>
<p><strong>Configurando o Dovecot</strong></p>
<p>Vou usar o comando sed para fazer as alterações necessárias em vez de ficarmos abrindo arquivo e editando.</p>
<pre class="remontti-code"># cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
# sed -i -e &#039;s/#listen/listen/&#039; /etc/dovecot/dovecot.conf

# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
# sed -i -e &#039;s/#driver =/driver = mysql/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Se voce ainda não reiniciou a maquina sua variavel $MINHASENHA ainda está carregando sua senha, voce pode executar # echo $MINHASENHA ve se retorna ela. se não repita o comando</p>
<pre class="remontti-code">
# MINHASENHA=&#039;sua-senha-do-usuario-postifix-do-mysql&#039;

# sed -i -e &quot;s/#connect =/connect = host=localhost dbname=postfix user=postfix password=$MINHASENHA/&quot; /etc/dovecot/dovecot-sql.conf.ext
# sed -i -e &#039;s/#default_pass_scheme/default_pass_scheme/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Vamos inserir algumas linhas ao final de dovecot-sql.conf.ext.</p>
<pre class="remontti-code">
# echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;user_query = SELECT concat(&#039;/var/vmail/&#039;, maildir) as home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as mail, 5000 AS uid, 5000 AS gid, concat(&#039;*:bytes=&#039;, (quota)) AS quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;password_query = SELECT username as user, password, concat(&#039;/var/vmail/&#039;, maildir) as userdb_home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid, concat(&#039;*:bytes=&#039;, (quota)) AS userdb_quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
</pre>
<p>Alterações dos arquivos 10-auth.conf / 10-logging.conf / 10-ssl.conf</p>
<pre class="remontti-code">
# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
# sed -i -e &#039;s/#disable_plaintext_auth = yes/disable_plaintext_auth = no/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/#auth_mechanisms = plain/auth_mechanisms = plain login/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/!include auth-system.conf.ext/#!include auth-system.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/#!include auth-sql.conf.ext/!include auth-sql.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf

# cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.orig
# sed -i -e &#039;s/#log_path/log_path/&#039; /etc/dovecot/conf.d/10-logging.conf
# sed -i -e &#039;s/#log_timestamp = &quot;%b %d %H:%M:%S &quot;/log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;/&#039; /etc/dovecot/conf.d/10-logging.conf

# cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
# sed -i -e &#039;s/ssl = no/#ssl = no/&#039; /etc/dovecot/conf.d/10-ssl.conf
# sed -i -e &#039;s/#ssl_cert =/ssl_cert =/&#039; /etc/dovecot/conf.d/10-ssl.conf
# sed -i -e &#039;s/#ssl_key =/ssl_key =/&#039; /etc/dovecot/conf.d/10-ssl.conf</pre>
<p>Criamos os certificados para o dovecot</p>
<pre class="remontti-code"># openssl req -new -x509 -days 3650 -nodes -out &quot;/etc/dovecot/dovecot.pem&quot; -keyout &quot;/etc/dovecot/private/dovecot.pem&quot;</pre>
<p>Em 10-master.conf ficou complicado fazer alteração com sed então vamos no braço.</p>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
# vim /etc/dovecot/conf.d/10-master.conf</pre>
<p>em :service auth {<br />
COMENTE tudo de unix_listener auth-userdb</p>
<pre class="remontti-code">
service auth {

#unix_listener auth-userdb {
 #mode = 0666
 #user =
 #group =
#}

#descomente
 unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }

#add
  unix_listener auth-master {
    mode = 0666
  }

  #Descomente
  user = $default_internal_user
}</pre>
<p>Vamos criar um filtro para que todas as mensagens marcada com spam sejam movida para o diretórios SPAM.</p>
<pre class="remontti-code">
# mkdir /var/lib/dovecot/sieve/
# cp /etc/dovecot/conf.d/90-sieve.conf /etc/dovecot/conf.d/90-sieve.conf.orig
# sed -i -e &#039;s/#sieve_default =/sieve_default =/&#039; /etc/dovecot/conf.d/90-sieve.conf
# sed -i -e &#039;s/#sieve_global_dir =/sieve_global_dir = \/var\/lib\/dovecot\/sieve\/ /&#039; /etc/dovecot/conf.d/90-sieve.conf

# echo &#039;require [&quot;fileinto&quot;];&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;# rule:[Spam]&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;        fileinto &quot;Junk&quot;;&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;}&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve

# sievec /var/lib/dovecot/sieve/default.sieve
# chown -R vmail:vmail /var/lib/dovecot

# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
# sed -i -e &#039;s/mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u/mail_location = mbox:~\/mail:INBOX=\/var\/vmail\/%u/&#039; /etc/dovecot/conf.d/10-mail.conf
</pre>
<p>!Exatamente nessa ordem!</p>
<pre class="remontti-code">
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Junk /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Junk { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Sent /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Sent { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Drafts /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Drafts { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Trash /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  mailbox Trash { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/#mail_plugins =/mail_plugins = quota/&#039; /etc/dovecot/conf.d/10-mail.conf
</pre>
<pre class="remontti-code">
# cp /etc/dovecot/conf.d/20-managesieve.conf  /etc/dovecot/conf.d/20-managesieve.conf.orig
# vim /etc/dovecot/conf.d/20-managesieve.conf</pre>
<p>Descomente:</p>
<pre class="remontti-code">
# Uncomment to enable managesieve protocol:
protocols = $protocols sieve

service managesieve-login {
}
service managesieve {
}
protocol sieve {
}</pre>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/15-lda.conf.orig</pre>
<p>Altere nos comandos (dominiorev.com.br) para seu domínio</p>
<pre class="remontti-code">
!# sed -i -e &#039;s/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n  postmaster_address = postmaster@dominiorev.com.br/&#039; /etc/dovecot/conf.d/15-lda.conf
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n  auth_socket_path = \/var\/run\/dovecot\/auth-master/&#039; /etc/dovecot/conf.d/15-lda.conf
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins sieve/&#039; /etc/dovecot/conf.d/15-lda.conf

# cp /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota imap_quota/&#039; /etc/dovecot/conf.d/20-imap.conf

# cp /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota/&#039; /etc/dovecot/conf.d/20-pop3.conf

# cp /etc/dovecot/conf.d/90-quota.conf /etc/dovecot/conf.d/90-quota.conf.orig
# sed -i -e &#039;s/#quota = maildir/quota = maildir/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule =/quota_rule =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule2 =/quota_rule2 =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_warning/quota_warning/&#039; /etc/dovecot/conf.d/90-quota.conf
</pre>
<pre class="remontti-code"># vim /etc/dovecot/conf.d/90-quota.conf</pre>
<p>Descomente</p>
<pre class="remontti-code">
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = dovecot
  unix_listener quota-warning {
    user = vmail
  }
}</pre>
<pre class="remontti-code"># vim /usr/local/bin/quota-warning.sh</pre>
<pre class="remontti-code">
#!/bin/sh
PERCENT=$1
USER=$2
cat &lt;&lt; EOF | /usr/lib/dovecot/deliver -d $USER -o &quot;plugin/quota=maildir:User quota:noenforcing&quot;
From: postmaster@mail.dominiorev.com.br
Subject: Quota Aviso

AVISO
Usando $PERCENT% do tamanho da caixa postal.

Remontti
(55) 9999-9999
EOF
</pre>
<pre class="remontti-code"># chmod +x /usr/local/bin/quota-warning.sh
# /etc/init.d/dovecot restart
# /etc/init.d/postfix restart </pre>
<p><i>Comando para ver cota</i></p>
<pre class="remontti-code"># doveadm quota get -u usuario@dominio.com.br</pre>
<h4>WEBMAIL ROUNDCUBE</h4>
<pre class="remontti-code"># apt install php5-intl php-pear
# sed -i -e &quot;s/^;date\.timezone =.*$/date\.timezone = &#039;America\/Sao_Paulo&#039;/&quot; /etc/php5/apache2/php.ini
# /etc/init.d/apache2 restart
# cd /var/www/html</pre>
<p>Acesse e baixe a versao mais recente<br />
https://roundcube.net/download/</p>
<p>Hoje 1.2.4 - Complete</p>
<pre class="remontti-code"># wget --no-check-certificate https://github.com/roundcube/roundcubemail/releases/download/1.2.4/roundcubemail-1.2.4-complete.tar.gz

# tar -vxzf roundcubemail*
# mv roundcubemail-1.2.4 webmail
# chown  www-data. -R webmail</pre>
<p>Criaremos nosso banco de dados para o roundcubemail.</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p>Será solicitado a senha root do mysql, entre com a senha.</p>
<pre class="remontti-code">
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY &#039;SUA-SENHA-BD-ROUND&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Acesse:<br />
http://SEU-DOMINIO/webmail/installer/</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-227x300.png" alt="screenshot_20161017_152350" width="227" height="300" class="alignnone size-medium wp-image-1503" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-227x300.png 227w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-768x1016.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-774x1024.png 774w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350.png 875w" sizes="auto, (max-width: 227px) 100vw, 227px" /></a></p>
<p>Clique em <strong>Next</strong></p>
<p>Principais itens a ser alterado ou de seu gosto o que não citei deixei padrão</p>
<p><strong>== General configuration ==</strong><br />
product_name: Nome do Webmail<br />
Check client IP in session authorization: MARQUE</p>
<p><strong>== Logging & Debugging ==</strong><br />
log_driver: syslog</p>
<p><strong>== Database setup ==</strong><br />
Database type: MYSQL<br />
Database server: localhost<br />
Database name: roundcubemail<br />
Database user name: roundcube<br />
Database password: SUA-SENHA-BD-ROUND<br />
db_prefix:</p>
<p><strong>== IMAP Settings ==</strong><br />
username_domain: mail.dominiorev.com.br</p>
<p><strong>== SMTP Settings ==</strong><br />
smtp_server: tls://mail.dominiorev.com.br<br />
smtp_port: 25</p>
<p><strong>== Display settings & user prefs ==</strong><br />
language *: pt_BR<br />
If preview pane is enabled: Marque<br />
Compose HTML formatted messages: always</p>
<p><strong>== Plugins ==</strong><br />
"De acordo com suas necessidades! Porém vou configurar os seguintes.<br />
- emoticons<br />
- managesieve<br />
- markasjunk<br />
- newmail_notifier<br />
- password<br />
- zipdownload</p>
<p>Agora clique em <strong>[CREAT CONFIG]</strong><br />
Vai retornar uma mensagem:<br />
<i>The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.</i></p>
<p>Isso significa que nosso arquivo de configuração do roundcube foi criado (config/config.inc.php)</p>
<p>Agora clique em: <strong>[CONTINUE]</strong><br />
Agora em: <strong>[Inicialize database]</strong></p>
<p>Irá retornar:<i><br />
Check DB config<br />
DSN (write):  OK<br />
DB Schema:  OK<br />
DB Write:  OK<br />
DB Time:  OK</i></p>
<p>Se você já criou uma conta de email você pode testa-la [Check login]</p>
<p>Como recomendações, mova o diretório <strong>installer</strong> para outro nome ou remova.</p>
<p><i>After completing the installation and the final tests please remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config.inc.php is disabled.</p>
<p>Depois de completar a instalação e os testes finais remova toda a pasta de instalação da raiz de documentos do servidor web ou certifique-se de que enable_installer opção no config.inc.php está desativado.</i></p>
<pre class="remontti-code"># mv installer/ installer_XYZ_12345</pre>
<p>Acesse o diretório dos plugins do roundcube.</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins/</pre>
<p><strong>== newmail_notifier ==</strong></p>
<pre class="remontti-code"># cd newmail_notifier
# cp config.inc.php.dist config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p><strong>== zipdownload ==</strong></p>
<pre class="remontti-code"># cd ../zipdownload
# cp config.inc.php.dist config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p><strong>== markasjunk ==</strong><br />
(Sem configuração)</p>
<p><strong>= managesieve =</strong><br />
Faz emails identificado com spam cair na pasta spam.</p>
<pre class="remontti-code"># cd ../managesieve
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere: (atençao para o caminho)</p>
<pre class="remontti-code">
$config[&#039;managesieve_default&#039;] = &#039;/var/www/html/webmail/plugins/managesieve/default.sieve&#039;;
$config[&#039;managesieve_script_name&#039;] = &#039;Filtros&#039;;</pre>
<p>Crie o arquivo default.sieve</p>
<pre class="remontti-code"># vim /var/www/html/webmail/plugins/managesieve/default.sieve</pre>
<pre class="remontti-code">
require [&quot;fileinto&quot;];
# rule:[Spam]
if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot;
{
        fileinto &quot;Junk&quot;;
        stop;
}</pre>
<p><strong>== password ==</strong><br />
Permite usuário alterar sua senha.</p>
<pre class="remontti-code"># cd ../password
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere:</p>
<pre class="remontti-code">
//Define o uma quantidade minima de caracteres
$config[&#039;password_minimum_length&#039;] = 8;

$config[&#039;password_require_nonalpha&#039;] = false;

$config[&#039;password_db_dsn&#039;] = &#039;mysql://postfix:SENHA-POSTFIX-MYSQL@localhost/postfix&#039;;
$config[&#039;password_query&#039;] = &quot;UPDATE  mailbox SET  password=MD5(%p) WHERE username=%u AND password=MD5(%o)&quot;;
</pre>
<p><strong>Plugins extra (http://plugins.roundcube.net/)</strong></p>
<p># cd /var/www/html/webmail/plugins/</p>
<p><strong>== contextmenu ==</strong><br />
Cria menus ao clicar com o direito. (# apt install git)</p>
<pre class="remontti-code"># git clone --recursive https://github.com/JohnDoh/Roundcube-Plugin-Context-Menu.git
# mv Roundcube-Plugin-Context-Menu contextmenu</pre>
<p><strong>== persistent_login ==</strong><br />
Permite deixar salvo a sessão.</p>
<pre class="remontti-code"># git clone --recursive https://github.com/mfreiholz/Roundcube-Persistent-Login-Plugin.git
# mv Roundcube-Persistent-Login-Plugin persistent_login
# cd persistent_login/
# cp config.inc.php.dist  config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p>Precisa fazer umas alterações em nossas tabelas do bd roundcubemail, para isso use:</p>
<pre class="remontti-code"># mysql -u roundcube -pSENHA-USER-MYSQL-ROUNDCUBE roundcubemail &lt; sql/mysql.sql</pre>
<p>A tradução ao meu ver ficou estranha, e vamos adicionar um aviso. </p>
<pre class="remontti-code"># vim localization/pt_BR.inc</pre>
<p>Altere para:</p>
<pre class="remontti-code">
&lt;?php
$labels[&#039;ifpl_rememberme&#039;] = &#039;Salvar login&#039;;
$labels[&#039;ifpl_rememberme_hint&#039;] = &#039;N&atilde;o salve seu login em computadores p&uacute;blicos por raz&otilde;es de seguran&ccedil;a.&#039;;
?&gt;</pre>
<p><strong>== dovecot_ident ==</strong><br />
Como webmail é um acesso localhost, nos logs de acesso IMAP não queremos isso e sim o IP do usuário que esta acessando, para isso:</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins
# git clone --recursive https://github.com/corbosman/dovecot_ident.git
# vim /etc/dovecot/dovecot.conf</pre>
<p>Decomente incluindo o valor (127.0.0.1 ::1)</p>
<pre class="remontti-code">login_trusted_networks = 127.0.0.1 ::1 IP-DO-SEU-SERVIDOR</pre>
<p>ex:</p>
<pre class="remontti-code">login_trusted_networks = 127.0.0.1 ::1 250.250.0.6 2000:fff:250:250:0::6</pre>
<pre class="remontti-code"># /etc/init.d/dovecot  restart
# /etc/init.d/postfix  restart</pre>
<p>Agora precisamos adicionar nossos plugins extrar nas configurações do Round.</p>
<pre class="remontti-code"># vim /var/www/html/webmail/config/config.inc.php</pre>
<p>Procure por:</p>
<pre class="remontti-code">
$config[&#039;plugins&#039;]
Inclua os plugins contextmenu, persistent_login e dovecot_ident ficando:
$config[&#039;plugins&#039;] = array(&#039;emoticons&#039;, &#039;managesieve&#039;, &#039;markasjunk&#039;, &#039;newmail_notifier&#039;, &#039;password&#039;, &#039;zipdownload&#039;,&#039;contextmenu&#039;, &#039;persistent_login&#039;, &#039;dovecot_ident&#039;);

//Eu particularmente gosto de fazer ainda algumas mudanças, se desejar inclua ao final do arquivo:
$config[&#039;show_images&#039;] = 2;
$config[&#039;prefer_html&#039;] = true;
$config[&#039;check_all_folders&#039;] = true;
$config[&#039;message_show_email&#039;] = true;
$config[&#039;draft_autosave&#039;] = 180;
$config[&#039;quota_zero_as_unlimited&#039;] = true;
$config[&#039;list_cols&#039;] = array(&#039;flag&#039;, &#039;status&#039;, &#039;fromto&#039;, &#039;subject&#039;, &#039;date&#039;, &#039;size&#039;, &#039;attachment&#039;, &#039;priority&#039;);
//Se desejar cadastrar um domino qual não precisa informar o @dominio...
$config[&#039;username_domain&#039;] = &#039;dominiorev.com.br&#039;;
</pre>
<pre class="remontti-code"># chown  www-data. -R /var/www/html/webmail/</pre>
<p>Seu servidor de e-mail já está funcionado, logue em seu webmail, envie algum e-mails.<br />
Acesse: http://SEU-DOMINIO/webmail/</p>
<h4>PEGANDO A ULTIMA VEZ QUE USUÁRIO LOGOU E O IP</h4>
<p>Se você é administrador de um servidor de e-mail certamente vai querer isso!<br />
Primeiramente vamos adicionar alguns campos extrar nassa tabela mailbox (last_login_date last_login_ip last_login_proto)</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<pre class="remontti-code">
use postfix;
ALTER TABLE `mailbox` ADD `last_login_date` DATETIME NULL COMMENT &#039;last login date&#039;,ADD `last_login_ip` VARCHAR( 39 ) NULL COMMENT &#039;last login ip&#039;,ADD `last_login_proto` CHAR( 5 ) NULL ;
quit;</pre>
<p>Vamos ensinar o dovecot a alimentar esses campos.<br />
<strong>10-master.conf</strong></p>
<pre class="remontti-code"># sed -i -e &#039;s/service imap {/service imap {\n  executable = imap imap-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service imap {/service imap {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  executable = pop3 pop3-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting POP3&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-pop.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting IMAP&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-imap.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf</pre>
<p>Crie o arquivo postlogin-imap.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-imap.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfix&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfix&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;IMAP&quot; \
WHERE username=&#039;$USER&#039;;
EOF
fi
exec &quot;$@&quot;</pre>
<p>Crie o arquivo postlogin-pop.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-pop.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfix&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfix&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;POP3&quot; \
WHERE username=&#039;$USER&#039;;
EOF
fi
exec &quot;$@&quot;</pre>
<pre class="remontti-code"># chmod +x /usr/local/bin/postlogin-*
# /etc/init.d/dovecot  restart</pre>
<p>Acesse sua conta de email e apois consulte a tabela mailbox (SELECT * FROM `mailbox`)</p>
<p>Até este ponto nosso servidor está 100%, agora falta apenas um Anti-Spam e um Anti-Vírus para ficar perfeito, Então vamos nessa <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h4>SPAMASSASSIN</h4>
<p>Vamos começar pelo SpamAssassin</p>
<pre class="remontti-code"># apt install spamc spamassassin</pre>
<p>Alguns ajustes</p>
<pre class="remontti-code"># sed -i -e &#039;s/ENABLED=0/ENABLED=1/&#039; /etc/default/spamassassin
# sed -i -e &#039;s/CRON=0/CRON=1/&#039; /etc/default/spamassassin
# sed -i -e &#039;s/# report_safe 1/report_safe 0/&#039; /etc/spamassassin/local.cf
????# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# systemctl enable spamassassin</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicione ==> <strong>-o content_filter=spamassassin</strong></p>
<pre class="remontti-code">
smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
submission inet n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
smtps     inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
  {..}
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png" data-rel="lightbox-gallery-yHBrjn0n" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png" alt="" width="300" height="242" class="alignnone size-medium wp-image-1633" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png 619w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>E no final do arquivo:</p>
<pre class="remontti-code">
# SpamAssassin
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
</pre>
<p>Vamos instalar o Razor Pyzor para ajudar no bloquei dos Spam.</p>
<pre class="remontti-code"># apt install razor pyzor</pre>
<pre class="remontti-code"># vim /etc/spamassassin/local.cf</pre>
<p>Inclua antes da ultima linha (endif # Mail::SpamAssassin::Plugin::Shortcircuit)</p>
<pre class="remontti-code">
# razor2
use_razor2 1
score RAZOR2_CHECK 2.500

# pyzor
use_pyzor 1
score PYZOR_CHECK 2.500
</pre>
<pre class="remontti-code"># su - debian-spamd -c &#039;razor-admin -d --create&#039;
# su - debian-spamd -c &#039;razor-admin -register&#039;
# su - debian-spamd -c &#039;razor-admin -discover&#039;
# su - debian-spamd -c &#039;pyzor discover&#039;</pre>
<h4>ANTIVIRUS AMAVIS / CLAMAV</h4>
<p>Você precisa ter nos repositórios os pacotes <strong>non-free</strong></p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>(exemplo)</p>
<pre class="remontti-code">
deb http://ftp.br.debian.org/debian/ jessie main contrib non-free</pre>
<pre class="remontti-code"># apt update
# apt install amavisd-new clamav clamav-freshclam  clamav-daemon arj bzip2 cabextract nomarch pax rar unrar unzip zip zoo lhasa libmail-dkim-perl libnet-ldap-perl libsnmp-perl libzeromq-perl lzop p7zip rpm
# adduser clamav amavis
# /etc/init.d/clamav-freshclam stop
# freshclam
# su - amavis -c &#039;razor-admin -d --create&#039;
# su - amavis -c &#039;razor-admin -register&#039;
# su - amavis -c &#039;razor-admin -discover&#039;
# su - amavis -c &#039;pyzor discover&#039; </pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/15-content_filter_mode</pre>
<p>#(Descomente)</p>
<pre class="remontti-code">
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/50-user</pre>
<p>Adicionar !! Atenção para SENHA</p>
<pre class="remontti-code">
#
@lookup_sql_dsn = (
    [&#039;DBI:mysql:database=postfix;host=127.0.0.1;port=3306&#039;,
     &#039;postfix&#039;,
     &#039;SENHA-BD-POSTFIX&#039;]);
$sql_select_policy = &#039;SELECT &quot;Y&quot; as local FROM alias WHERE address IN (%k)&#039;;

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/05-node_id</pre>
<p> Altere: </p>
<pre class="remontti-code">$myhostname = &quot;mail.dominiorev.com.br&quot;;</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/01-debian</pre>
<p>Comente:</p>
<pre class="remontti-code">#$unarj      = [&#039;arj&#039;, &#039;unarj&#039;];</pre>
<p>Descomente:</p>
<pre class="remontti-code">$unrar      = [&#039;rar&#039;, &#039;unrar&#039;]; #disabled (non-free, no security support)</pre>
<h4>Personalização Amavis</h4>
<pre class="remontti-code"># vim /etc/amavis/conf.d/20-debian_defaults</pre>
<p>Eu comento sa_spam_subject_tag, assim as mensagens que forem spam não terão o assunto trocado, pois elas já irão cair na caixa de spam.</p>
<pre class="remontti-code">#$sa_spam_subject_tag = &#039;***SPAM*** &#039;;</pre>
<p>Comente se não desejar receber as menssagens de erro.</p>
<pre class="remontti-code">
#$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)
#$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA
#$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)</pre>
<p>Não comente final_bad_header_destiny (se não os spam não serão entregues)</p>
<p>Se não quiser que seu email postmaster receba um email com todos os emails q ele discartou, comente:</p>
<pre class="remontti-code">#$virus_admin = &quot;postmaster\@$mydomain&quot;; # due to D_DISCARD default</pre>
<p>Habilitar o amavis no postfix</p>
<pre class="remontti-code"># postconf -e &quot;content_filter = smtp-amavis:[127.0.0.1]:10024&quot;</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicionar ao final</p>
<pre class="remontti-code">
smtp-amavis       unix  -       -       -       -       2       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
  -o smtp_generic_maps=

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o mynetworks=127.0.0.0/8
  -o content_filter=
  -o local_recipient_maps=
  -o local_header_rewrite_clients=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
  -o strict_rfc821_envelopes=yes
</pre>
<p>Restarte todos os serviços</p>
<pre class="remontti-code"># /etc/init.d/clamav-daemon restart
# /etc/init.d/clamav-freshclam restart
# /etc/init.d/spamassassin restart
# /etc/init.d/amavis restart
# /etc/init.d/dovecot restart
# /etc/init.d/postfix restart </pre>
<p>Gostou? Ficou com alguma dúvida?<br />
Deixe seu comentário!</p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/1485">Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1485/feed</wfw:commentRss>
			<slash:comments>40</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Debian 8 Jessie/Debian 9 stretch Limpa passo-a-passo</title>
		<link>https://blog.remontti.com.br/1152</link>
					<comments>https://blog.remontti.com.br/1152#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 10 Sep 2016 21:13:37 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debia]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[jessie]]></category>
		<category><![CDATA[limpa]]></category>
		<category><![CDATA[minimal]]></category>
		<category><![CDATA[netinst]]></category>
		<category><![CDATA[virtualbox]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1152</guid>

					<description><![CDATA[<p>Para demonstrar essa instalação utilizei o Virtual Box  caso você deseje saber como instalar no seu sistema operacional acesse: https://www.virtualbox.org/wiki/Downloads Vamos precisar da imagem ISO do Debian 8/9, vou utilizar a ISO netinst, é&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1152">Instalação do Debian 8 Jessie/Debian 9 stretch Limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Para demonstrar essa instalação utilizei o Virtual Box  caso você deseje saber como instalar no seu sistema operacional acesse: <a href="https://www.virtualbox.org/wiki/Downloads">https://www.virtualbox.org/wiki/Downloads</a></p>
<p>Vamos precisar da imagem ISO do Debian 8/9, vou utilizar a ISO netinst, é necessário conexão com a internet para fazer a instalação. O motivo para utilizar a versão netinst é que não irei instalar nenhum pacote pois minha instalação será limpa!<br />
Baixe a ISO em: <a href="https://www.debian.org/distrib/netinst">https://www.debian.org/distrib/netinst</a> utilizei a versão <strong>amd64</strong></p>
<p>Para saber o procedimento usado para criação da máquina virtual <a href="https://blog.remontti.com.br/1134">clique aqui</a>.</p>
<p>Após iniciar sua máquina virtual com  a ISO <strong>debian-8.8.X-amd64-netinst.iso / debian-9.X.X-amd64-netinst.iso</strong></p>
<p>A instalação do debian 8 e 9 estão praticamente igual. </p>
<p><strong>Boot Debian 9 Stretch</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/VirtualBox_Solus_19_06_2017_13_26_25.png" data-rel="lightbox-gallery-lLS66aPn" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/VirtualBox_Solus_19_06_2017_13_26_25.png" alt="" width="640" height="480" class="alignnone size-full wp-image-2021" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/VirtualBox_Solus_19_06_2017_13_26_25.png 640w, https://blog.remontti.com.br/wp-content/uploads/2016/09/VirtualBox_Solus_19_06_2017_13_26_25-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><strong>Boot Debian 8 Jessie</strong><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-1150" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/12.png" alt="12" width="640" height="480" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/12.png 640w, https://blog.remontti.com.br/wp-content/uploads/2016/09/12-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p>Selecione <strong>Instal</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1159" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/13.png" alt="13" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/13.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/13-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/13-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione o idioma: Portuguese (Brazil) <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1160" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/14.png" alt="14" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/14.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/14-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/14-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Com a tecla tab selecione <strong>Sim [Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1161" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/15.png" alt="15" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/15.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/15-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/15-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione Brasil <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1162" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/16.png" alt="16" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/16.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/16-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/16-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione Português Brasileiro <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1163" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-1.png" alt="17-1" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Neste momento ele irá identificar sua conexão de rede, caso você esteja recebendo seus IP automaticamente (DHCP) porem se não tiver será solicitado que informe. No entanto se você gostaria de setar eles manualmente, ao chegar na tela abaixo, use tab e selecione voltar. Se você não tem conhecimento em redes melhor você pular essa parte.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1166" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-2.png" alt="17-2" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1167" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-3.png" alt="17-3" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-3.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-3-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-3-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione <strong>Configurar a rede Manualmente [Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1168" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4.png" alt="17-4" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Minha rede esta na classe 10.0.0.0/24, se você  não sabe qual classe de IP está sua rede você pode usar ALT+F2 para abrir uma 2º terminal e digitar o comando <strong>ip address show</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1165" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/e2.png" alt="e2" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/e2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/e2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/e2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Veja que em <strong>eth0</strong> &#8230; <strong>inet</strong> temos <strong>10.0.0.108/24</strong> Agora sabemos qual nossa classe de IP.  Porém se você levar seu computador para outro rede de classe diferente será necessário alterar seu ip manualmente no arquivo /etc/network/interfaces.</p>
<p>Voltarmos para tela de instalação usando <strong>ALT+F1</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1168" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4.png" alt="17-4" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-4-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Colocamos nosso endereço IP fixo. Caso queira informar sua mascara  junto com o IP ex.: IP/24 pode fazer, caso contrário a próxima irá solicitar sua mascara.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1172" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-5.png" alt="17-5" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-5.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-5-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-5-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Minha máscara  é /24 logo 255.255.255.0 <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1169" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-6.png" alt="17-6" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-6.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-6-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-6-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Agora vamos informar nosso Gateway <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1170" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-7.png" alt="17-7" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/17-7.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-7-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/17-7-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Informamos nosso servidor DNS, no exemplo estou usando o servidor DNS Público da Google, mas você pode usar o do seu provedor.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1171" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/18.png" alt="18" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/18.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/18-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/18-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Voltamos ao nome da máquina! Se você pulou a parte de configuração de IP você deve continuar daqui. Bom nesse campo informamos o nome da nossa máquina, vou dar o nome de debian,</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1173" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/19.png" alt="19" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/19.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/19-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/19-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Nome de domínio pode ser um existente ou não, a não ser que você saiba o que esta  fazendo, mas ai acho que você não estaria vendo esse tutorial <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Você pode por seunome.com.br por exemplo.<strong> [Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1174" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/20.png" alt="20" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/20.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/20-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/20-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Informe a sua senha do usuário <strong><span style="color: #ff0000;">root</span> [Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1175" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/21.png" alt="21" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/21.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/21-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/21-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Repita a senha para o usuário root</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1176" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/22.png" alt="22" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/22.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/22-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/22-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Vamos criar um usuário, Digite seu nome completo do seu usuário. <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1177" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/23.png" alt="23" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/23.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/23-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/23-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Agora informe o nome do login de seu usuário.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1178" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/24.png" alt="24" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/24.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/24-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/24-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Digite a senha do seu usuário.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1179" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/25.png" alt="25" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/25.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/25-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/25-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Repita.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1180" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/26.png" alt="26" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/26.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/26-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/26-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione o fuso horário da sua região.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1181" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/27.png" alt="27" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/27.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/27-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/27-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Agora precisamos configurar nossa partições, neste exemplo vamos fazer <strong>Manual,</strong> caso queira selecionar Primeira opção Assistido &#8211; Usar Disco inteiro ele fará automaticamente os passos abaixo.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1182" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/28.png" alt="28" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/28.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/28-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/28-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione seu &#8220;HD&#8221; (sda) ATA VBOX <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1183" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/29.png" alt="29" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/29.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/29-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/29-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Sim <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1184" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/30.png" alt="30" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/30.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/30-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/30-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione o ESPAÇO LIVRE <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1185" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/31.png" alt="31" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/31.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/31-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/31-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione: Criar uma nova partição <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1187" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/32.png" alt="32" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/32.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/32-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/32-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Criaremos uma partição com <strong>2GB</strong> qual será destinado a SWAP <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1188" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/33.png" alt="33" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/33.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/33-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/33-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Como é para memória swap vamos selecionar Lógica. <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1189" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/34.png" alt="34" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/34.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/34-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/34-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Vamos definir no Início <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1190" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-1.png" alt="35-1" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione Usar como e tecle <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1191" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-2.png" alt="35-2" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione Área de troca (swap) <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1192" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-3.png" alt="35-3" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/35-3.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-3-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/35-3-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione Finalizar a configuração da partição <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1193" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/36.png" alt="36" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/36.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/36-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/36-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecionamos o restante de ESPAÇO LIVRE <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1194" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/37.png" alt="37" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/37.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/37-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/37-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Criar uma nova partição <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1195" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/38.png" alt="38" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/38.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/38-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/38-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Vamos definir o restante  livre no meu caso 51.7GB <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1196" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/39.png" alt="39" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/39.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/39-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/39-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Primária  <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1197" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/40.png" alt="40" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/40.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/40-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/40-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Vamos usar como Ext4, e nosso ponto de montagem será / . Não precisamos alterar nada, apenas Selecione <strong>Finalizar as configurações da partição</strong> <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1198" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/41.png" alt="41" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/41.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/41-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/41-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Nossas partições foram criadas agora vamos: Finalizar o particionamento e escrever as mudanças no disco <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1199" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/42.png" alt="42" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/42.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/42-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/42-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Sim<strong> [Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1200" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/43.png" alt="43" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/43.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/43-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/43-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1201" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/44.png" alt="44" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/44.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/44-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/44-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Agora vamos selecionar nosso repositório. Selecione Brasil, a não ser que você não esteja no Brasil <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1202" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/45.png" alt="45" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/45.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/45-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/45-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Eu uso sempre a primeira ftp.br.debian.org sempre foi bem estável, mas já usei outras também e não tive problema. <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1203" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/46.png" alt="46" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/46.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/46-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/46-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Caso sua rede tenha proxy configurado. Deixe em branco <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1204" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/47.png" alt="47" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/47.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/47-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/47-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1205" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/48.png" alt="48" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/48.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/48-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/48-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1206" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/49.png" alt="49" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/49.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/49-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/49-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Não <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1207" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/50.png" alt="50" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/50.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/50-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/50-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1208" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/51.png" alt="51" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/51.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/51-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/51-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Esse é o ponto mais importante para a instalação limpa do Debian, pois não vamos instalar nenhum pacote, e sim apenas o sistema base.<em> &#8220;Se precisar eu instalo depois !&#8221;</em></p>
<p>Use o a a setas cima/baixo e desmarque todas as opções com a BARRA DE ESPAÇO não tecle enter se não ele vai continuar, após desmarcar todas as opções use a tecla tab para selecionar continuar e tecle enter.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1209" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/52.png" alt="52" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/52.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/52-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/52-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1210" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/53.png" alt="53" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/53.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/53-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/53-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Grub será instalado.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1211" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/54.png" alt="54" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/54.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/54-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/54-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Sim <strong>[Enter]</strong>  caso contrário seu sistema não irá inicializar.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1212" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/55.png" alt="55" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/55.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/55-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/55-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione /dev/sda <strong>[Enter]</strong></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1213" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/56.png" alt="56" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/56.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/56-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/56-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Aguarde a finalização&#8230;</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1214" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/57.png" alt="57" width="800" height="600" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/57.png 800w, https://blog.remontti.com.br/wp-content/uploads/2016/09/57-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/57-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>PRONTO! Parabéns seu Debian está instalado! <strong>[Enter]</strong> para continuar, a maquina irá reiniciar.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1216" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/59.png" alt="59" width="640" height="480" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/59.png 640w, https://blog.remontti.com.br/wp-content/uploads/2016/09/59-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p>Nossa tela do GRUB</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1217" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/60.png" alt="60" width="720" height="400" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/60.png 720w, https://blog.remontti.com.br/wp-content/uploads/2016/09/60-300x167.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Maquina inicializada! Agora logue com seu usuário root</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1219" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/62.png" alt="62" width="720" height="400" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/62.png 720w, https://blog.remontti.com.br/wp-content/uploads/2016/09/62-300x167.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Pronto, já pode começar a brincadeira.</p>
<p>É altamente recomendados instalar os módulos <a target="_blank" href="https://pt.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">dkms</a> do virtualbox. <a target="_blank" href="https://wiki.debian.org/VirtualBox">https://wiki.debian.org/VirtualBox</a></p>
<p>Primeiramente vamos instalar os virtualbox-* &#038; linux-headers correspondentes. Para isso vamos precisar adicionar o componente &#8220;contrib&#8221; em nosso repositório. Se você não souber como fazer bastar dar o comando abaixo: </p>
<pre class="remontti-code"># echo &quot;deb http://ftp.br.debian.org/debian/ jessie main contrib&quot; &gt;&gt; /etc/apt/sources.list </pre>
<p>Agora precisamos atualizar nosso repositório e instalar nossos pacotes: </p>
<pre class="remontti-code">
# apt update
# apt install linux-headers-$(uname -r|sed &#039;s,[^-]*-[^-]*-,,&#039;) virtualbox
</pre>
<p>Feito, Debian rodando no virtualbox vai estar 100%.</p>
<p>Para desligar sua máquina use o comando # poweroff </p>
<p>Se você é novo nesse mundo aqui temos alguns comandos Linux <a href="https://blog.remontti.com.br/384">http://blog.remontti.com.br/384</a></p>
<p>O post <a href="https://blog.remontti.com.br/1152">Instalação do Debian 8 Jessie/Debian 9 stretch Limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1152/feed</wfw:commentRss>
			<slash:comments>34</slash:comments>
		
		
			</item>
		<item>
		<title>Tunando Elementary Os Loki 0.4 com Tweaks</title>
		<link>https://blog.remontti.com.br/1128</link>
					<comments>https://blog.remontti.com.br/1128#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 10 Sep 2016 18:00:00 +0000</pubDate>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[0.4]]></category>
		<category><![CDATA[Elementary OS]]></category>
		<category><![CDATA[Loki]]></category>
		<category><![CDATA[Personalizar]]></category>
		<category><![CDATA[Tweaks]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1128</guid>

					<description><![CDATA[<p>Primeiramente vamos instalar o Tweaks, &#8220;depois que você usa não desapega mais!&#8221; Elementary OS deixou de dar suporte aos  PPA’s visando os riscos de estabilidade e segurança do sistema. Porém a solução não é muito&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1128">Tunando Elementary Os Loki 0.4 com Tweaks</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Primeiramente vamos instalar o Tweaks, &#8220;depois que você usa não desapega mais!&#8221;</p>
<p>Elementary OS deixou de dar suporte aos  PPA’s visando os riscos de estabilidade e segurança do sistema. Porém a solução não é muito complicada, para voltarmos a poder adicionar os PPA’s basta você instalar o pacote software-properties-common</p>
<pre class="remontti-code">$ sudo apt-get install software-properties-common</pre>
<p>Depois disto, o processo de adição de PPA e instalação da aplicação é completamente normal:</p>
<pre class="remontti-code">$ sudo add-apt-repository ppa:philip.scott/elementary-tweaks
$ sudo apt update
$ sudo apt install elementary-tweaks</pre>
<p>Versão do tweaks é disponibilizada por Felipe Escoto no <a href="https://github.com/elementary-tweaks/elementary-tweaks">GitHub</a>.</p>
<p>Nesta nova versão ela está com um visual novo:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Tweaks_002.png" alt="tweaks_002" width="906" height="444" class="alignnone size-full wp-image-1132" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Tweaks_002.png 906w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Tweaks_002-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Tweaks_002-768x376.png 768w" sizes="auto, (max-width: 906px) 100vw, 906px" /></p>
<p>O post <a href="https://blog.remontti.com.br/1128">Tunando Elementary Os Loki 0.4 com Tweaks</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1128/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Postfix: Fazendo Relay SMTP do Gmail/Google Apps</title>
		<link>https://blog.remontti.com.br/736</link>
					<comments>https://blog.remontti.com.br/736#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 27 Jul 2010 23:18:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Postfix SMTP Relay Gmail GoogleApps]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=736</guid>

					<description><![CDATA[<p>Após: 2 dias, 12 tutoriais, sonhar com o problema, dores de cabeça constantes, leve vontade de matar alguem&#8230; Resolvi compartilhar com vocês uma solução definitiva de como usar o Postfix para fazer um Relay&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/736">Postfix: Fazendo Relay SMTP do Gmail/Google Apps</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Após:</strong> <em>2 dias, 12 tutoriais, sonhar com o problema, dores de cabeça constantes, leve vontade de matar alguem&#8230;</em><br />
Resolvi compartilhar com vocês uma solução definitiva de como usar o <strong>Postfix</strong> para fazer um<strong> Relay Server</strong> usando o <strong>SMTP do GMail</strong> ou <strong>Google Apps</strong>.<br />
Estou citando Google Apps, pois muitos usam seus dominios próprios no google apps (ex: <em>http://google.com/a/seudominio.com.br/</em>).</p>
<p>Veja o exemplo de topologia da rede em que foi implementada a solução.</p>
<div id="attachment_738" style="width: 256px" class="wp-caption aligncenter"><a href="http://www.remontti.com.br/blog/wp-content/uploads/2010/07/SMTP_Relay-1.png" data-rel="lightbox-gallery-sYep0NAU" data-rl_title="" data-rl_caption=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-738" class="size-medium wp-image-738" title="" src="https://www.remontti.com.br/blog/wp-content/uploads/2010/07/SMTP_Relay-1-246x300.png" alt="" width="246" height="300" srcset="https://blog.remontti.com.br/wp-content/uploads/2010/07/SMTP_Relay-1-246x300.png 246w, https://blog.remontti.com.br/wp-content/uploads/2010/07/SMTP_Relay-1.png 614w" sizes="auto, (max-width: 246px) 100vw, 246px" /></a><p id="caption-attachment-738" class="wp-caption-text">Esquema da Rede</p></div>
<p><strong>O Problema:</strong> Determinados usuários fazem uso de um sistema e com ele gostariam de enviar e-mails, assim, agilizando o dia-a-dia. Mas o sistema em questão apenas pede 2 parâmetros: ip do servidor smtp + porta! ¬¬<br />
Meu primeiro pensamento foi <em>&#8220;eu adoraria dar uma tapa na cara do programador disso&#8221;</em> e o segundo pensamento foi&#8230;</p>
<p><strong>A Solução:</strong> Como o sistema apenas pede os parâmetros <em>ip do servidor</em> + <em>porta</em>, a solução escolhida por para conseguir enviar e-mails usando a próprio servidor da empresa seria um Relay SMTP repassando os e-mails ao GMail!<br />
Lembrando que, como a empresa usa o google apps, não havia um servidor postfix local, então, o postfix implementado nesta solução foi unicamente para ser um Relay SMTP <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p># não use o nome de seu dominio em um servidor relay</p>
<p><strong><span id="more-736"></span><br />
1º Passo: Criar os certificados necessários</strong></p>
<p>Iremos criar os certificados em uma pasta temporária, usar oque for necessário e deletar as sobras<br />
vá para seu home:<br />
<span style="color: #742600;"># cd ~</span></p>
<p>Crie o ceritificado CA usando:<br />
Os parâmetros usados devem ser modificados por você! <code><br />
Escolha sua senha!<br />
<span style="color: #742600;"># /usr/lib/ssl/misc/CA.pl -newca</span></code></p>
<blockquote><p>Making CA certificate …<br />
Generating a 1024 bit RSA private key<br />
…….++++++<br />
……………….++++++<br />
writing new private key to ‘./demoCA/private/cakey.pem’<br />
Enter PEM pass phrase: <strong>password</strong><br />
Verifying – Enter PEM pass phrase: <strong>password</strong><br />
—–<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter ‘.’, the field will be left blank.<br />
—–<br />
Country Name (2 letter code) [US]:<strong>BR</strong><br />
State or Province Name (full name) [New York]:<strong>Sao Paulo</strong><br />
Locality Name (eg, city) []:<strong>Sao Paulo</strong><br />
Organization Name (eg, company) []:<strong>EMPRESA LTDA</strong></p>
<p>Organizational Unit Name (eg, section) []:<br />
Common Name (eg, YOUR name) []:<strong>Luno de Souza</strong><br />
Email Address []:<strong>username@email.com</strong></p></blockquote>
<blockquote><p>Please enter the following ‘extra’ attributes<br />
to be sent with your certificate request<br />
A challenge password []:<br />
An optional company name []:<br />
Using configuration from /usr/lib/ssl/openssl.cnf<br />
Enter pass phrase for ./demoCA/private/cakey.pem:<br />
Check that the request matches the signature<br />
Signature ok</p></blockquote>
<p><strong><br />
2º Passo: Criar os certificados do servidor</strong><br />
Os parâmetros usados devem ser modificados por você!<br />
Devem ser os mesmos que você colocou ao criar os certificados CA!!!<br />
Caso você opite por mudar &#8220;<code>SERVER-key.pem -out SERVER-req.pem" para outros nomes, lembre-se que essa alteração deverá ser feita em todo esse artigo ;)<br />
</code><br />
<span style="color: #742600;"><code># openssl req -new -nodes -subj  '/CN=<strong>EMPRESA LTDA</strong>/O=<strong>APELIDO EMPRESA</strong>/C=<strong>BR</strong>/ST=<strong>SAO PAULO</strong>/L=<strong>SAO PAULO</strong>/emailAddress=<strong>username@mail.com</strong>' -keyout SERVER-key.pem -out SERVER-req.pem -days 3650</code></span></p>
<p><strong><br />
3º Passo: Assinar o certificado</strong><br />
Deverá usar senha senha!<br />
<span style="color: #742600;"># openssl ca -out <code>SERVER</code>-cert.pem -infiles <code>SERVER</code>-req.pem</span></p>
<p>Using configuration from<br />
/usr/lib/ssl/openssl.cnf<br />
Enter pass phrase for ./demoCA/private/cakey.pem:<br />
Check that the request matches the signature<br />
Signature ok</p>
<p><strong>4º Passo: Copiar os certificados para a pasta do Postfix com suas permições<br />
</strong><span style="color: #742600;"># cp demoCA/cacert.pem SERVER-key.pem SERVER-cert.pem /etc/postfix<br />
# chmod 644 /etc/postfix/SERVER-cert.pem /etc/postfix/cacert.pem<br />
# chmod 400 /etc/postfix/SERVER-key.pem</span></p>
<p><strong>5º Passo: Copiar os certificados para a pasta do Postfix com suas permições<br />
</strong>O Gmail usa o certificado Thawte Premium Server CA. Então adicione isso no final do arquivo /etc/postfix/cacert.pem<br />
<strong>OBS:</strong> Essa é a versão atual do certificado <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&#8212;&#8211;BEGIN CERTIFICATE&#8212;&#8211;<br />
MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB<br />
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ<br />
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE<br />
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh<br />
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl<br />
cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow<br />
gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT<br />
CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV<br />
BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo<br />
YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z<br />
ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2<br />
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560<br />
ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j<br />
+ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/<br />
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI<br />
CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH<br />
IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga<br />
WuFg3GQjPEIuTQ==<br />
&#8212;&#8211;END CERTIFICATE&#8212;&#8211;</p>
<p><strong>OBS: </strong>Caso você esteja em um futuro e acusar o erro de certificado inválido como aconteseu comigo, você deverá acessar: https://www.geotrust.com/resources/root-certificates/index.html ,  (Base-64 encoded X.509) e fazer download da &#8220;nova versão&#8221; do certificado!<br />
Após o download basta um cat Equifax_Secure_CA.pem &gt;&gt; /etc/posfix/cacert.pem</p>
<p><strong>6º Passo: Configurando o main.cf</strong><br />
Irei passar o meu atual main.cf que está em funcionamento, afinal não haverá problemas em usa-lo para fazer um &#8220;Relay Server&#8221;<br />
Fique atento as linhas em negrito e meus comentários nelas!</p>
<p>&#8212;&#8211;CORTE AQUI&#8212;&#8211;</p>
<p>smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)<br />
biff = no</p>
<p># appending .domain is the MUA&#8217;s job.<br />
append_dot_mydomain = no</p>
<p># Uncomment the next line to generate &#8220;delayed mail&#8221; warnings<br />
#delay_warning_time = 4h</p>
<p>readme_directory = no<br />
# mude para seu hostname<br />
myhostname = <strong>servnet2.localhost</strong><br />
alias_maps = hash:/etc/aliases<br />
alias_database = hash:/etc/aliases.db<br />
myorigin = /etc/mailname<br />
# não use o nome de seu dominio em um servidor relay<br />
mydestination = <strong>servnet1.localhost, localhost.localdomain, localhost</strong><br />
relayhost =<br />
transport_maps = hash:/etc/postfix/transport<br />
# coloque a range de ip usada em sua rede<br />
mynetworks = 127.0.0.0/8 <strong>192.168.12.0</strong>/24<br />
mailbox_command = procmail -a &#8220;$EXTENSION&#8221;<br />
mailbox_size_limit = 0<br />
recipient_delimiter = +<br />
inet_interfaces = all</p>
<p>## TLS Settings<br />
#<br />
smtp_tls_CAfile = /etc/postfix/cacert.pem<br />
smtp_tls_cert_file = /etc/postfix/SERVER-cert.pem<br />
smtp_tls_key_file = /etc/postfix/SERVER-key.pem<br />
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache<br />
smtp_use_tls = yes<br />
smtpd_tls_CAfile = /etc/postfix/cacert.pem<br />
smtpd_tls_cert_file = /etc/postfix/SERVER-cert.pem<br />
smtpd_tls_key_file = /etc/postfix/SERVER-key.pem<br />
smtpd_tls_received_header = yes<br />
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache<br />
smtpd_use_tls = yes<br />
tls_random_source = dev:/dev/urandom</p>
<p>#<br />
## SASL Settings<br />
#This is going in to THIS server<br />
smtpd_sasl_auth_enable = no<br />
<strong># usei essa opção para o postfix não pedir senha ao meu sistema!!!</strong><br />
smtp_auth_enable = no</p>
<p># We need this<br />
smtp_sasl_auth_enable = yes<br />
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd<br />
smtpd_sasl_local_domain = $myhostname<br />
smtp_sasl_security_options = noanonymous<br />
smtp_sasl_tls_security_options = noanonymous<br />
smtpd_sasl_application_name = smtpdinet_protocols = ipv4<br />
&#8212;&#8211;CORTE AQUI&#8212;&#8211;</p>
<p><strong>7º Passo: Criando o arquivc transport</strong><br />
Crie o arquivo /etc/postfix/transport com o seguinte conteudo:<code><br />
# /etc/postfix/transport<br />
#<br />
# Relay de emails para o Gmail<br />
* smtp:[smtp.gmail.com]:587<br />
#</code></p>
<p><strong>8º Passo: Criando o arquivo sasl_passwd</strong><br />
Crie o arquivo /etc/postfix/sasl_passwd com o seguinte conteudo:<code><br />
# /etc/postfix/sasl_passwd<br />
# Caso use Gmail<br />
#[smtp.gmail.com]:587 usuario@seudominio.com.br:senha<br />
#<br />
# Caso tenha seu dominio no Google Apps<br />
[smtp.gmail.com]:587 usuario@seudominio.com.br:senha<br />
</code></p>
<p><strong>9º Passo: Criando arquivo generic e usando o postconf para criar os Hash&#8217;s</strong><code><br />
<span style="color: #7a2800;"> # touch generic</span><br />
<span style="color: #7a2800;"> # </span></code><span style="color: #7a2800;">postmap /etc/postfix/sasl_passwd;postmap /etc/postfix/generic</span></p>
<p><strong>10º Passo: Limpando os lixos e vamos ao teste! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
</strong><code>Limpando...<br />
<span style="color: #7a2800;"># cd ~</span><br />
<span style="color: #7a2800;"> # </span></code><span style="color: #7a2800;"><code>rm SERVER-req.pem </code><code>SERVER</code><code>-cert.pem </code><code>SERVER</code><code>-key.pem &amp;&amp; rm -r demoCA/</code></span></p>
<p>Testando&#8230;<br />
<span style="color: #7a2800;"> # echo &#8220;Test SMTP Relay&#8221; | mailx -s &#8216;Test 123&#8217; seumail@seudominio.com.br</span></p>
<p>Verificando o teste&#8230;<br />
<span style="color: #7a2800;"># tail -f /var/log/mail.log</span></p>
<p><strong>Se seguiu este tutorial passo-a-passo deverá correr tudo ok <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong><br />
<strong>Algumas dicas:</strong><br />
Verificando e-mail na fila e envio:<code><br />
<span style="color: #800000;"># postqueue -p</span><br />
ou<br />
<span style="color: #800000;"># mailq</span></code></p>
<p>Deletando todas as menssagens pendentes:<br />
<span style="color: #800000;"><code># postsuper -d ALL</code></span></p>
<p>Conclusões:<br />
EM CONSTRUÇÃO <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>O post <a href="https://blog.remontti.com.br/736">Postfix: Fazendo Relay SMTP do Gmail/Google Apps</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/736/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
