<?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>Temporini Matteo &#187; servizi</title>
	<atom:link href="http://www.temporini.net/category/servizi/feed" rel="self" type="application/rss+xml" />
	<link>http://www.temporini.net</link>
	<description>It&#039;s time to fix!</description>
	<lastBuildDate>Fri, 27 Jan 2012 23:21:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Windows: Lista Utenti gruppo Active directory</title>
		<link>http://www.temporini.net/windows-lista-utenti-gruppo-active-directory</link>
		<comments>http://www.temporini.net/windows-lista-utenti-gruppo-active-directory#comments</comments>
		<pubDate>Mon, 23 Mar 2009 19:44:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[Primary Domain Controller]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[domain controller]]></category>
		<category><![CDATA[group members]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pdc]]></category>
		<category><![CDATA[rpc group]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://www.temporini.net/?p=257</guid>
		<description><![CDATA[<p>Ebbene si, oggi parliamo di Windows (non temete è solo questione di pochi secondi)</p> <p>Nello specifico vogliamo risolvere un problema abbastanza &#8220;spinoso&#8221;, che Active Directory non risolve immediatamente (ci sono alcuni tool esterni che lo fanno a dire il vero, ma noi vogliamo usare linux vero??), vogliamo avere la lista degli utenti inseriti in un [...]]]></description>
			<content:encoded><![CDATA[<p>Ebbene si, oggi parliamo di <strong>Windows </strong>(non temete è solo questione di pochi secondi)</p>
<p>Nello specifico vogliamo risolvere un problema abbastanza &#8220;spinoso&#8221;, che <strong>Active Directory</strong> non risolve immediatamente (ci sono alcuni tool esterni che lo fanno a dire il vero, ma noi vogliamo usare linux vero??), vogliamo avere la lista degli utenti inseriti in un gruppo.</p>
<p>Si lo so è assurdo, ma di default con l&#8217;interfaccia di windwos non è possibile farlo.</p>
<p>Presupposto per fare quanto segue è che abbiate joinato tramite <strong>samba</strong> e <strong>kerberos</strong> (net ads e company) il vostro dominio a una macchina <strong>linux</strong> e la cosa esula da questo how to.</p>
<p>Viste le premesse dalla nostra console linux non ci resta fare altro che lanciare</p>
<p><code>root@localhost# net rpc group members "GRUPPO" -S pdc.local -UAdministrator</code></p>
<p>Dove nello specifico</p>
<p>GRUPPO = nome del gruppo del quale volete la lista degli utenti</p>
<p>pdc.local = hostname del vostro Primary Domain Controller</p>
<p>Administrato = nome utente dello user con cui volete fare la query</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/windows-lista-utenti-gruppo-active-directory/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Traffic Shaping: come ti limito la banda con tc e iptables</title>
		<link>http://www.temporini.net/traffic-shaping-come-ti-limito-la-banda-con-tc-e-iptables</link>
		<comments>http://www.temporini.net/traffic-shaping-come-ti-limito-la-banda-con-tc-e-iptables#comments</comments>
		<pubDate>Thu, 05 Feb 2009 22:00:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[file sharing]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Matteo]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[comandi linux]]></category>
		<category><![CDATA[configurazione]]></category>
		<category><![CDATA[kilobytes]]></category>
		<category><![CDATA[link bandwidth]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[megabytes]]></category>
		<category><![CDATA[tc]]></category>

		<guid isPermaLink="false">http://www.temporini.net/?p=244</guid>
		<description><![CDATA[<p>Questa sera ho avuto l&#8217;esigenza di fare un po&#8217; di traffic shaping casalingo per un piccolo progetto.</p> <p>Dovevo limitare la banda globale (quella globale non quella del singolo file scaricato), del server ftp.</p> <p>Soluzione al problema due comandi linux: tc e iptables.</p> <p>Lo script che ci permetterà di fare tutto è questo:</p> <p># Change this [...]]]></description>
			<content:encoded><![CDATA[<p>Questa sera ho avuto l&#8217;esigenza di fare un po&#8217; di <strong>traffic shaping</strong> casalingo per un piccolo progetto.</p>
<p>Dovevo limitare la banda globale (quella globale non quella del singolo file scaricato), del server ftp.</p>
<p>Soluzione al problema due comandi linux: <strong>tc</strong> e <strong>iptables</strong>.</p>
<p>Lo script che ci permetterà di fare tutto è questo:</p>
<p><code># Change this to your link bandwidth<br />
# (for cable modem, DSL links, etc. put the maximal bandwidth you can<br />
# get, not the speed of a local Ethernet link)<br />
REAL_BW='20Mbit'</code></p>
<p><code># Change this to the bandwidth you want to allocate to FTP.<br />
# We're talking about megabits, not megabytes, so 80Kbit is<br />
# 10 Kilobytes/s<br />
FTP_BW='600Kbit'</code></p>
<p><code># Change this to your physical network device (or 'ppp0')<br />
NIC='eth0'</code></p>
<p><code># Change this to the ports you assigned for passive FTP<br />
FTP_PORT_LOW="10000"<br />
FTP_PORT_HIGH="20000"</code></p>
<p><code>tc qdisc add dev "$NIC" root handle 1: cbq \<br />
bandwidth "$REAL_BW" avpkt 1000</code></p>
<p><code>tc class add dev "$NIC" parent 1: classid 1:1 cbq bandwidth "$REAL_BW" \<br />
rate "$REAL_BW" maxburst 5 avpkt 1000</code></p>
<p><code>tc class add dev "$NIC" parent 1:1 classid 1:10 cbq \<br />
bandwidth "$REAL_BW" rate "$FTP_BW" maxburst 5 avpkt 1000 bounded</code></p>
<p><code>tc qdisc add dev "$NIC" parent 1:10 sfq quantum 1514b</code></p>
<p><code>tc filter add dev "$NIC" parent 1: protocol ip handle 1 fw flowid 1:10</code></p>
<p><code>iptables -t mangle -A OUTPUT -p tcp --sport 20:21 -j MARK --set-mark 1</code></p>
<p><code>iptables -t mangle -A OUTPUT -p tcp \<br />
--sport "$FTP_PORT_LOW":"$FTP_PORT_HIGH" -j MARK --set-mark 1</code></p>
<p>Nel mio caso specifico, ho forzato il mio server ftp (<strong>pureftpd</strong>) ad utilizzare come porte in uscita un range che va dalla porta 10000 alla 20000 (questo lo si fa lanciando pureftpd con il parametro -p 10000:20000 oppure modificando direttamente il file di configurazione),  e su questo range ho effettuato lo shaping di banda, bloccandola di fatto a 600Kbit/s, circa 80KByte/s.</p>
<p>Evito di commentare lo script in quanto è già stato fatto in inglese.</p>
<p>Tratto da: http://download.pureftpd.org/pub/pure-ftpd/doc/FAQ</p>
<p>Saluti</p>
<p>Matteo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/traffic-shaping-come-ti-limito-la-banda-con-tc-e-iptables/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtual Users And Domains With Postfix, Courier, MySQL (Ubuntu 8.04 LTS 64bit)</title>
		<link>http://www.temporini.net/virtual-users-and-domains-with-postfix-courier-mysql-and-ubuntu-804-lts-64bit</link>
		<comments>http://www.temporini.net/virtual-users-and-domains-with-postfix-courier-mysql-and-ubuntu-804-lts-64bit#comments</comments>
		<pubDate>Tue, 27 Jan 2009 15:52:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[cyrus]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Domain Name System]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pop3]]></category>
		<category><![CDATA[posta]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[virtualhost]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[configurazione]]></category>
		<category><![CDATA[cyrus imap posta mail]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Matteo]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://www.temporini.net/?p=233</guid>
		<description><![CDATA[<p>Questa guida vuole essere una quick reference per installare un server di posta con antispam e gestione relativamente semplice di utenti e domini, tramite ubuntu 8.04 TLS 64bit.</p> <p>Le feature principali sono:</p> <p>- SMTP-AUTH e TLS</p> <p>- password encrypted</p> <p>- Amavisd, SpamAssassin e ClamAV</p> <p></p> <p>La guida di riferimento principale la potete trovare all&#8217;indirizzo http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu8.04, [...]]]></description>
			<content:encoded><![CDATA[<p>Questa guida vuole essere una <strong>quick reference</strong> per installare un server di posta con antispam e gestione relativamente semplice di utenti e domini, tramite ubuntu 8.04 TLS <strong>64bit</strong>.</p>
<p>Le feature principali sono:</p>
<p>- <strong>SMTP-AUTH </strong>e<strong> TLS</strong></p>
<p><strong>- </strong>password<strong> </strong><strong>encrypted</strong></p>
<p><strong>- </strong><strong>Amavisd</strong>, <strong>SpamAssassin</strong> e <strong>ClamAV</strong></p>
<p><span id="more-233"></span></p>
<p>La guida di riferimento principale la potete trovare all&#8217;indirizzo <a href="http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu8.04">http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu8.04</a>, la scrivo per il semplice motivo che la versione di ubuntu a 64bit differisce per alcuni pacchetti rispetto alla versione equivalente a 32bit. A differenza della guida principale ho deciso di non utilizzare la quota, in quanto volevo un sistema che non necessitasse di alcun tipo di ricompilazione esterna.</p>
<h3><strong>1. Preliminari</strong></h3>
<p>Eseguiamo:<br />
<code>root@localhost: sudo su</code><br />
<code>root@localhost: ln -sf /bin/bash /bin/sh</code><br />
<code>root@localhost: /etc/init.d/apparmor stop</code><br />
<code>root@localhost: update-rc.d -f apparmor remove</code></p>
<h3>2. Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin</h3>
<p>Procediamo con l&#8217;installazione dei pacchetti che ci servono:</p>
<p><code>root@localhost: apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass</code></p>
<p>A questo punto vi verranno fatte delle domande post installazione a cui dovrete risopndere come a seguire:</p>
<p><span class="system">New password for the MySQL &#8220;root&#8221; user:</span> <span class="highlight">&lt;&#8211; <strong>yourrootsqlpassword</strong></span><br />
<span class="system">Repeat password for the MySQL &#8220;root&#8221; user:</span> <span class="highlight">&lt;&#8211; <strong>yourrootsqlpassword</strong></span><br />
<span class="system">Create directories for web-based administration?</span> <span class="highlight">&lt;&#8211; <strong>No</strong></span><br />
<span class="system">General type of mail configuration:</span> <span class="highlight">&lt;&#8211; <strong>Internet Site</strong></span><br />
<span class="system">System mail name:</span> <span class="highlight">&lt;&#8211; <strong>server1.example.com</strong></span><br />
<span class="system">SSL certificate required</span> <span class="highlight">&lt;&#8211; <strong>Ok</strong></span><br />
<span class="system">Web server to reconfigure automatically:</span> <span class="highlight">&lt;&#8211; <strong>apache2</strong></span></p>
<p><span class="highlight">A questo punto sulla guida originale si passava alla configurazione della quota, che noi non vogliamo usare, se voi volete farlo, prendete come riferimento la guida originale.</span></p>
<h3><span class="highlight">3. Creiamo </span>il database MySQL per Postfix/Courier</h3>
<p>Creiamo il database <em>mail</em></p>
<p><code>root@localhost: mysqladmin -u root -p create mail</code></p>
<p>entriamo nella shell di mysql</p>
<p><code>root@localhost: mysql -u root -p</code></p>
<p>On the MySQL shell, we create the user <span class="system">mail_admin</span> with the passwort <span class="system">mail_admin_password</span> (replace it with your own password) who has <span class="system">SELECT,INSERT,UPDATE,DELETE</span> privileges on the <span class="system">mail</span> database. This user will be used by Postfix and Courier to connect to the mail database</p>
<p>Sulla shell di MySQL, creeremo l&#8217;utente <em>mail_admin</em> con la password &#8220;<em>mail_admin_password</em>&#8220;, che avrà diritti di SELECT,INSERT,UPDATE,DELETE sul database <em>mail</em>.</p>
<p><code>mysql&gt; GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';</code><br />
<code>mysql&gt; GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';</code><br />
<code>mysql&gt; FLUSH PRIVILEGES;</code></p>
<p>selezioniamo ora il database <em>mail</em></p>
<p><code>mysql&gt; USE mail;</code></p>
<p>Creiamo ora le tabelle che ci servono:</p>
<p><code>CREATE TABLE domains (<br />
domain varchar(50) NOT NULL,<br />
PRIMARY KEY (domain) )<br />
TYPE=MyISAM;</code></p>
<p><code>CREATE TABLE forwardings (<br />
source varchar(80) NOT NULL,<br />
destination TEXT NOT NULL,<br />
PRIMARY KEY (source) )<br />
TYPE=MyISAM;</code></p>
<p><code>CREATE TABLE users (<br />
email varchar(80) NOT NULL,<br />
password varchar(20) NOT NULL,<br />
PRIMARY KEY (email)<br />
) TYPE=MyISAM;</code></p>
<p><code>CREATE TABLE transport (<br />
domain varchar(128) NOT NULL default '',<br />
transport varchar(128) NOT NULL default '',<br />
UNIQUE KEY domain (domain)<br />
) TYPE=MyISAM;</code></p>
<p><code>quit;</code></p>
<p>A questo punto avremo le seguenti tabelle:</p>
<p>- <code>domains : indica quali domini gestisce il nostro server di posta</code></p>
<p>- <code>forwardings : gestisce la lista dei forwarding di una determinata casella di posta verso un altra</code></p>
<p>- <code>users : le effettive caselle di posta, con tanto di nome utente e password</code></p>
<p>- <code>transport: serve a passare la gestione della singola email a un altro server, sintassi smtp:[1.2.3.4] le parentesi quadre indicano che non si deve fare nessuna query al dns, in questo caso va indicato l'indirizzo ip corretto.</code></p>
<p>Ora tramite phpmyadmin accessibile sul vostro webserver http://ip-del-server/phpmyadmin potrete gestire tutto quel che riguarda gli account di posta.</p>
<h3>4- Configurazione Postfix</h3>
<p>Editiamo</p>
<p><code>vi /etc/mysql/my.cnf</code></p>
<p>e configuriamo la voce</p>
<pre>[...]
bind-address            = 127.0.0.1
[...]</pre>
<p>se abbiamo modificato il file, eventualmente lanciamo il comando /etc/init.d/mysql restart</p>
<p>Creiamo il file<br />
<code>vi /etc/postfix/mysql-virtual_domains.cf</code></p>
<p>e inseriamo</p>
<pre>user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1</pre>
<p>creiamo il file</p>
<p><code>vi /etc/postfix/mysql-virtual_forwardings.cf</code></p>
<pre>user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1</pre>
<p>creiamo il file</p>
<p><code>vi /etc/postfix/mysql-virtual_mailboxes.cf</code></p>
<pre>user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1</pre>
<p>creiamo il file</p>
<p><code>vi /etc/postfix/mysql-virtual_email2email.cf</code></p>
<pre>user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1</pre>
<p>creiamo il file</p>
<p><code>nano /etc/postfix/mysql-virtual_transports.cf</code></p>
<pre>user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT transport FROM transport WHERE domain='%s'
hosts = 127.0.0.1</pre>
<p>Modifichiamo ora i permessi ai file</p>
<p><code>chmod o= /etc/postfix/mysql-virtual_*.cf<br />
chgrp postfix /etc/postfix/mysql-virtual_*.cf</code></p>
<p>Creiamo ora il gruppo e l&#8217;utente vmail</p>
<p><code>groupadd -g 5000 vmail<br />
useradd -g vmail -u 5000 vmail -d /home/vmail -m</code></p>
<p>Eseguiamo ora i comandi di configurazione di postfix, facendo cura di modificare il server server1.example.com con il nostro FQDN.</p>
<p><code>postconf -e 'myhostname = server1.example.com'<br />
postconf -e 'mydestination = server1.example.com, localhost, localhost.localdomain'<br />
postconf -e 'mynetworks = 127.0.0.0/8'<br />
postconf -e 'virtual_alias_domains ='<br />
postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'<br />
postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'<br />
postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'<br />
postconf -e 'virtual_mailbox_base = /home/vmail'<br />
postconf -e 'virtual_uid_maps = static:5000'<br />
postconf -e 'virtual_gid_maps = static:5000'<br />
postconf -e 'smtpd_sasl_auth_enable = yes'<br />
postconf -e 'broken_sasl_auth_clients = yes'<br />
postconf -e 'smtpd_sasl_authenticated_header = yes'<br />
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'<br />
postconf -e 'smtpd_use_tls = yes'<br />
postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'<br />
postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'<br />
postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'<br />
#postconf -e 'virtual_create_maildirsize = yes'<br />
#postconf -e 'virtual_mailbox_extended = yes'<br />
#postconf -e 'virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'<br />
#postconf -e 'virtual_mailbox_limit_override = yes'<br />
#postconf -e 'virtual_maildir_limit_message = "The user you are trying to reach is over quota."'<br />
#postconf -e 'virtual_overquota_bounce = yes'<br />
postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'</code></p>
<p>Creiamo ora il certificato ssl</p>
<p><code>cd /etc/postfix<br />
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509</code></p>
<p>e completiamo le richieste del certificato come a seguire</p>
<pre>Country Name (2 letter code) [AU]: &lt;-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: &lt;-- Enter your State or Province Name.
Locality Name (eg, city) []: &lt;-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: &lt;-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: &lt;-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: &lt;-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []: &lt;-- Enter your Email Address.</pre>
<p>e modifichiamo i permessi come segue</p>
<p><code>chmod o= /etc/postfix/smtpd.key</code></p>
<h3>5. Configure Saslauthd</h3>
<p>Creiamo la cartella per saslauthd</p>
<p><code>mkdir -p /var/spool/postfix/var/run/saslauthd</code></p>
<p>Editiamo ora il file /etc/default/saslauthd settando <em>START</em> a <em>yes</em> e cambiando <em>OPTIONS=&#8221;-c -m /var/run/saslauthd&#8221;</em> a <em>OPTIONS=&#8221;-c -m /var/spool/postfix/var/run/saslauthd -r&#8221;</em>:</p>
<p><code>vi /etc/default/saslauthd</code></p>
<p>il risultato sarà</p>
<pre>#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#</pre>
<pre># Should saslauthd run automatically on startup? (default: no)
START=yes</pre>
<pre># Description of this saslauthd instance. Recommended.
# (suggestion: SASL Authentication Daemon)
DESC="SASL Authentication Daemon"</pre>
<pre># Short name of this saslauthd instance. Strongly recommended.
# (suggestion: saslauthd)
NAME="saslauthd"</pre>
<pre># Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent  -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam       -- use PAM
# rimap     -- use a remote IMAP server
# shadow    -- use the local shadow password file
# sasldb    -- use the local sasldb database file
# ldap      -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"</pre>
<pre># Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""</pre>
<pre># How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5</pre>
<pre># Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page for general information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"</pre>
<p>Editiamo il file</p>
<p><code>vi /etc/pam.d/smtp</code></p>
<p>inseriamo</p>
<pre>auth    required   pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1</pre>
<p>Creiamo il file</p>
<p><code>vi /etc/postfix/sasl/smtpd.conf</code></p>
<p>e inseriamo</p>
<pre>pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: sysop
sql_database: mail
sql_select: select password from users where email = '%u'</pre>
<p>aggiungiamo l&#8217;utente postfix al gruppo sals</p>
<p><code>root@localhost: adduser postfix sasl</code></p>
<p>e riavviamo postfix e sasl</p>
<p><code>/etc/init.d/postfix restart<br />
/etc/init.d/saslauthd restart</code></p>
<p>Configuriamo ora courier</p>
<p><code>vi /etc/courier/authdaemonrc</code></p>
<p>e modifichiamo</p>
<pre>[...]
authmodulelist="authmysql"
[...]</pre>
<p>Creiamo un backup di /etc/courier/authmysqlrc e svuotiamo il vecchio file</p>
<p><code>cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig<br />
cat /dev/null &gt; /etc/courier/authmysqlrc</code></p>
<p>Editiamo ora il file</p>
<p><code>vi /etc/courier/authmysqlrc</code></p>
<p>e inseriamo</p>
<pre>MYSQL_SERVER localhost
MYSQL_USERNAME mail_admin
MYSQL_PASSWORD mail_admin_password
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD</pre>
<p>e riavviamo courier</p>
<p><code>/etc/init.d/courier-authdaemon restart<br />
/etc/init.d/courier-imap restart<br />
/etc/init.d/courier-imap-ssl restart<br />
/etc/init.d/courier-pop restart<br />
/etc/init.d/courier-pop-ssl restart</code></p>
<p>Controlliamo ora se il nostro server pop3 funziona</p>
<p><code>telnet localhost pop3</code></p>
<p>scrivete <em>QUIT</em> e dovrebbe darvi qualcosa di simile a</p>
<pre>root@localhost: telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.
root@localhost:</pre>
<p>7. Modifichiamo /etc/aliases</p>
<p>Modifichiamo /etc/aliases con qualcosa simile a</p>
<p><code>vi /etc/aliases</code></p>
<pre>[...]
postmaster: root
root: postmaster@yourdomain.tld
[...]</pre>
<p>dopo di che ad ogni modifica di /etc/aliases lanciamo</p>
<p><code>root@localhost: newaliases</code></p>
<p>e riavviamo postfix</p>
<p><code>root@localhost: /etc/init.d/postfix restart </code></p>
<h3>8. Installiamo Amavisd-new, Spamassassin, Clamv</h3>
<p>Lanciamo il comando:</p>
<p><code>apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax</code></p>
<p>Abilitamo Clamav e Spamassassin editando il file <span class="system">/etc/amavis/conf.d/15-content_filter_mode , decommentando le linee </span><em><span class="system">@bypass_virus_checks_maps</span></em> e <em><span class="system">@bypass_spam_checks_maps</span></em></p>
<p><code>vi /etc/amavis/conf.d/15-content_filter_mode</code></p>
<p>Che diventerà una cosa simile a:</p>
<pre>@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);</pre>
<pre>#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#</pre>
<pre>@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);</pre>
<pre>1;  # ensure a defined return</pre>
<p>Controlliamo inoltre i settaggi dell&#8217;antispam e dell&#8217;antivirus nel file /etc/amavis/conf.d/20-debian_defaults , dovrebbero andare bene per tutti e non necessitano di modifiche particolari.</p>
<p>Editiamo il file /etc/amavis/conf.d/50-user</p>
<p><code>vi /etc/amavis/conf.d/50-user</code></p>
<p>ed aggiungiamo</p>
<pre>$pax='pax';</pre>
<p>avendo come risultato qualcosa di simile a:</p>
<pre>use strict;</pre>
<pre>#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#</pre>
<pre>$pax='pax';</pre>
<pre>#------------ Do not modify anything below this line -------------
1;  # ensure a defined return</pre>
<p>Eseguiamo questi comandi per aggiungere clamav al gruppo di amavis e riavviare amavisd-new e clamav:</p>
<p><code>adduser clamav amavis<br />
/etc/init.d/amavis restart<br />
/etc/init.d/clamav-daemon restart<br />
/etc/init.d/clamav-freshclam restart</code></p>
<p>Configuriamo ora postfix affinchè inoltri le email in arrivo all&#8217;antivirus amavisd-new</p>
<p><code>postconf -e 'content_filter = amavis:[127.0.0.1]:10024'<br />
postconf -e 'receive_override_options = no_address_mappings'</code></p>
<p>Modifichiamo il file /etc/postfix/master.cf</p>
<p><code>vi /etc/postfix/master.cf</code></p>
<p>e aggiungiamo alla fine</p>
<pre>[...]
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes</pre>
<pre>127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_bind_address=127.0.0.1</pre>
<p>e riavviamo postfix</p>
<p><code>/etc/init.d/postfix restart</code></p>
<p>ora eseguendo</p>
<p><code>netstat -tap</code></p>
<p>dovreste vedere Postfix (smtp 25) e 10025, e amavisd-new sulla 10024</p>
<pre>root@server1:/etc/postfix# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost.localdo:10024 *:*                     LISTEN      15645/amavisd (mast
tcp        0      0 localhost.localdo:10025 *:*                     LISTEN      16677/master
tcp        0      0 localhost.localdo:mysql *:*                     LISTEN      6177/mysqld
tcp        0      0 *:www                   *:*                     LISTEN      5367/apache2
tcp        0      0 *:smtp                  *:*                     LISTEN      16677/master
tcp6       0      0 [::]:imaps              [::]:*                  LISTEN      14020/couriertcpd
tcp6       0      0 [::]:pop3s              [::]:*                  LISTEN      14088/couriertcpd
tcp6       0      0 [::]:pop3               [::]:*                  LISTEN      14051/couriertcpd
tcp6       0      0 [::]:imap2              [::]:*                  LISTEN      13983/couriertcpd
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      4006/sshd
tcp6       0     52 server1.example.com:ssh 192.168.0.210%8191:3340 ESTABLISHED 4059/0
root@server1:/etc/postfix#</pre>
<h3>9. Install Razor, Pyzor And Configure SpamAssassin</h3>
<p>Installiamo ora Razor, Pyzor che utilizzano una rete di filtri spam collaborativa sostenuta da varie community.</p>
<p>Eseguiamo il comando:</p>
<p><code>apt-get install razor pyzor</code></p>
<p>A questo punto editiamo</p>
<p><code>vi /etc/spamassassin/local.cf</code></p>
<pre>[...]
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor</pre>
<pre>#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf</pre>
<pre>#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1</pre>
<p>Possiamo configurare la nostra configurazione di spamassassin con il comando:</p>
<p><code>spamassassin --lint</code></p>
<p>e non dovrebbe darci alcun errore sul risultato.</p>
<p>Riavviamo ora amavis:</p>
<p><code>/etc/init.d/amavis restart</code></p>
<p>Aggiorniamo le nuove regole di Spamassassin con</p>
<p><code>sa-update --no-gpg</code></p>
<p>Creiamo un comando crontab per aggiornare le regole ogni tot tempo</p>
<p><code>crontab -e</code></p>
<p>e inseriamo</p>
<pre>23 4 */2 * * /usr/bin/sa-update --no-gpg &amp;&gt; /dev/null</pre>
<h3>10. Test postfix</h3>
<p>Controliamo ora se tutto funziona, controlliamo ora se postfix è pronto per SMTP-AUTH e TLS<br />
<code>telnet localhost 25</code></p>
<p class="command">dopo la connessione diamo il comando</p>
<p><code>ehlo localhost</code></p>
<p class="command">e dovremmo trovare la stringa</p>
<p><code>250-STARTTLS</code></p>
<p>e<br />
<code>50-AUTH LOGIN PLAIN</code></p>
<p>Qualcosa tipo:</p>
<pre>root@server1:/usr/local/sbin# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@server1:/usr/local/sbin#</pre>
<p>Non ci resta che popolare il database con i dati che ci interessano, ometto questa parte in quanto la ritengo particolarmente semplice ed intuitiva,</p>
<p>Mi soffermo su due aspetti, il primo riguarda le PASSWORD. Quando inserite un nuovo utente mi raccomando di selezionare il tipo di campo per le password come ENCRYPT, altrimenti non vi funzionerà l&#8217;autenticazione.</p>
<p>Date un occhio alle tabelle del link http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu8.04-p4 in fondo alla pagina.</p>
<h3>11. Inviare un messaggio di benvenuto per creare la Maildir</h3>
<p>Una volta creato un account email è necessario inviare un&#8217;email affinchè venga creata immediatamente la directory dove verranno salvate le email. Se questo non viene fatto, quando qualcuno proverà a collegarsi via pop3 gli verrà dato un messaggio di errore. Provvediamo quandi a installare mailx tramite:</p>
<p><code>apt-get install mailx</code></p>
<p>per inviare un&#8217;email ci basta dare il comando</p>
<p><code>mailx sales@example.com</code></p>
<p>e compilare i seguenti campi</p>
<pre>mailx sales@example.com
Subject: Welcome &lt;-- ENTER
Welcome! Have fun with your new mail account. &lt;-- ENTER
&lt;-- CTRL+D
Cc: &lt;-- ENTER</pre>
<p>A questo punto potete installare squirrelmail e company per gestire la posta come preferite.</p>
<p>Saluti<br />
Matteo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/virtual-users-and-domains-with-postfix-courier-mysql-and-ubuntu-804-lts-64bit/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Webmin: un pannello di controllo free per pro users</title>
		<link>http://www.temporini.net/webmin-un-pannello-di-controllo-free-per-pro-users</link>
		<comments>http://www.temporini.net/webmin-un-pannello-di-controllo-free-per-pro-users#comments</comments>
		<pubDate>Tue, 04 Mar 2008 08:51:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[hosting]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[webmin networking howto]]></category>

		<guid isPermaLink="false">http://www.temporini.net/webmin-un-pannello-di-controllo-free-per-pro-users</guid>
		<description><![CDATA[<p>Solitamente sui server sono abbastanza contrario all&#8217;installazione di pannelli di controllo (plesk, cubepanel, cpanel o simili), in quanto non fanno altro che appesantire i server, portare bug e problemi di vario tipo.</p> <p>Purtroppo in alcune situazioni essi sono indispensabili (pensate ad un provider che deve permettere ai proprio utenti di gestirsi tutto il loro spazio, [...]]]></description>
			<content:encoded><![CDATA[<p>Solitamente sui server sono abbastanza contrario all&#8217;installazione di pannelli di controllo (plesk, cubepanel, cpanel o simili), in quanto non fanno altro che appesantire i server, portare bug e problemi di vario tipo.</p>
<p>Purtroppo in alcune situazioni essi sono indispensabili (pensate ad un provider che deve permettere ai proprio utenti di gestirsi tutto il loro spazio, e questi non sanno nemmeno cos&#8217;è un webserver).</p>
<p>Quello di cui vogliamo parlare oggi è <a href="http://www.webmin.com" title="Webmin">webmin</a>, si tratta di un pannello di controllo molto &#8220;low-level&#8221;, non è molto user-friendly come ptorebbe essere un plesk, è leggerissimo e permette di gestire pressochè qualunque servizio all&#8217;interno di un server (cosa che nessun altro pannello di controllo fa, solitamente si limitano alla parte web-hosting).</p>
<p>Prima di iniziare installiamo i pacchetti necessari sulla nostra debian:</p>
<p><code>apt-get install libnet-ssleay-perl openssl libauthen-pam-perl libio-pty-perl libmd5-perl</code></p>
<p>senza questi pacchetti non potremmo installare il nostro pannello, per cui fatelo.</p>
<p>Ora scarichiamo gratuitamente dal sito <a href="http://www.webmin.com" title="Webmin">www.webmin.com</a>  il nostro file .deb nelo specifico al momento in cui sto scrivendo l&#8217;articolo siamo alla versione 1.400, ora con un semplice</p>
<p><code>wget http://garr.dl.sourceforge.net/sourceforge/webadmin/webmin_1.400_all.deb</code></p>
<p>installiamo semplicemente il pacchetto tramite dpkg</p>
<p><code>dpkg -i  webmin_1.400_all.deb</code></p>
<p>ora non ci resterà altro da fare che accedere tramite un browser all&#8217;url  https://ip.del.nostro.server:10000</p>
<p>Il tutto è corredata da una svariata quantità di plugin aggiuntivi e di terze parti per poter configurare anche servizi non previsti di default, fra i quali vi segnalo <a href="http://www.webmin.com/virtualmin.html" title="Virtualmin">Virtualmin</a> per poter avere una migliore gestione edgli utenti e poter dare loro accesso a particolari sezioni o gestirsi autonomamente i propri dati.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/webmin-un-pannello-di-controllo-free-per-pro-users/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mrtg e monitoraggio DNS</title>
		<link>http://www.temporini.net/mrtg-e-monitoraggio-dns</link>
		<comments>http://www.temporini.net/mrtg-e-monitoraggio-dns#comments</comments>
		<pubDate>Fri, 14 Dec 2007 08:16:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CPU]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Domain Name System]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Matteo]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[reti]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[Snmp]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.temporini.net/mrtg-e-monitoraggio-dns</guid>
		<description><![CDATA[<p>La saga dei miei piccoli how-to sulle configurazioni di mrtg non finisce.</p> <p>Questa volta mi serviva avere uno strumento per controllare il carico di lavoro del dns, dove per carico di lavoro non intento i carichi della CPU (già discussi nell&#8217;articolo sulla configurazione dell&#8217;snmp di questo sito).</p> <p>Un buon parametro per effettuare questi contorlli su [...]]]></description>
			<content:encoded><![CDATA[<p>La saga dei miei piccoli how-to sulle <a href="http://www.temporini.net/configurazione-snmp" title="Configurazione snmp">configurazioni di mrtg</a> non finisce.</p>
<p>Questa volta mi serviva avere uno strumento per controllare  il carico di lavoro del dns, dove per carico di lavoro non intento i carichi della CPU (già discussi nell&#8217;articolo sulla <a href="http://www.temporini.net/configurazione-snmp" title="Configurazione snmp">configurazione dell&#8217;snmp</a> di questo sito).</p>
<p>Un buon parametro per effettuare questi contorlli su un <strong>DNS</strong> (Domain Name System) è il numero di query al minuto che vengono fatte, in tal modo è possibile avere una cronostoria e una rappresentazione di questo parametro che ci permette di valutare il numero delle richieste ed eventualmente evidenziare potenziali anomalie (es: un tetnativo di <strong>DDoS</strong> sulla porta 53 con un numero elevato di query).</p>
<p>Il numero di query sul dns non verrà generato a partire da un parametro snmp, bensì da uno script che effettua il parsing dei file di log del <strong>bind</strong>.<strong> </strong></p>
<p>Per ottenere questi log dobbiamo modificare il file /etc/bind/named.conf.options (se avete un unico file probabilmente sarà /etc/named/named.conf o /etc/bind/named.conf) ed aggiungere le seguenti righe:</p>
<p><code>zone-statistics yes;<br />
statistics-file "named.stats";</code></p>
<p>e rivviamo il <strong>named</strong> con</p>
<p><code>/etc/init.d/named restart</code></p>
<p>oppure</p>
<p><code>/etc/init.d/bind9 restart</code></p>
<p>a seconda della distribuzione che utilizzate. Ora all&#8217;interno del file /var/cache/bind/named.stats avrete delle statistiche sul numero di query per i singoli domini.</p>
<p>Il named ora è configurato correttamente, dobbiamo utilizzare i fati contenuti in nel file named.stats e utilizzarli con mrtg per generare i grafici.</p>
<p>Questo viene fatto utilizzando uno <a href="http://www.temporini.net/wp-content/uploads/2007/12/dnsstatspltar.gz" title="script">script</a> (lo potete scaricare tramite wget).</p>
<p>Salviamo il file all&#8217;interno della cartella /etc/mrtg/ o dove avete le vostre configurazioni di mrtg ed editiamo il file /etc/mrtg/mymrtg.cfg aggiungendo quanto di seguito riportato</p>
<p><code>Target[mydomain_DNS]: `/etc/mrtg/dnsstats.pl`<br />
Options[mydomain_DNS]: gauge,growright,nopercent,integer,unknaszero<br />
Title[mydomain_DNS]: DNS Server<br />
RouterUptime[mydomain_DNS]: public@localhost<br />
MaxBytes[mydomain_DNS]: 32000<br />
AbsMax[mydomain_DNS]: 64000<br />
WithPeak[mydomain_DNS]: wmy<br />
Colours[mydomain_DNS]: YELLOW #F9C000,RED #F90000,LIGHT YELLOW #FFFFBB,LIGTH RED #FF8080<br />
ShortLegend[mydomain_DNS]:queries/m<br />
YLegend[mydomain_DNS]: Qs per Minute<br />
Legend1[mydomain_DNS]: Queries received over 1 minute<br />
Legend2[mydomain_DNS]: Failed Queries received over 1 minute<br />
Legend3[mydomain_DNS]: Maximal Queries over 5 minutes<br />
Legend4[mydomain_DNS]: Maximal Failed Queries over 5 minutes<br />
LegendI[mydomain_DNS]:  Queries:<br />
LegendO[mydomain_DNS]:  Failures:<br />
PageTop[mydomain_DNS]: &lt;H1&gt;DNS Info&lt;/H1&gt;&lt;TABLE&gt;&lt;TR&gt;&lt;TD&gt;System:&lt;/TD&gt;     &lt;TD&gt;mydomain&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Maintainer:&lt;/TD&gt; &lt;TD&gt;Matteo Temporini (temporini.matteo@gmail.com)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Description:&lt;/TD&gt;&lt;TD&gt;DNS Monitor&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Details:&lt;/TD&gt;    &lt;TD&gt;Query Monitor&lt;/TD&gt;&lt;/TABLE&gt;</code></p>
<p>Mi raccomando fate attenzione che l&#8217;ultimo parametro stia tutta sulla stessa riga o vi darà errore.</p>
<p>Ora non ci resta altro da fare che rigenerare l&#8217;index.html di mrtg con il nuovo parametro<br />
<code></code></p>
<p><code>indexmaker --output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg </code></p>
<p>e gustarci i nostri grafici che vedete qua sotto <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.temporini.net/wp-content/uploads/2007/12/dns_mrtg.jpg" title="Dns Mrtg"><img src="http://www.temporini.net/wp-content/uploads/2007/12/dns_mrtg.jpg" alt="Dns Mrtg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/mrtg-e-monitoraggio-dns/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wrapper Sendmail</title>
		<link>http://www.temporini.net/wrapper-sendmail</link>
		<comments>http://www.temporini.net/wrapper-sendmail#comments</comments>
		<pubDate>Fri, 23 Nov 2007 16:16:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://www.temporini.net/wrapper-sendmail</guid>
		<description><![CDATA[<p>Problema del giorno&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problema del giorno</strong>&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita un&#8217;email, lo script viene dimenticato li e trovato da qualche bontempone che si diverte a esguirlo centinaia di volte&#8230; voi direte &#8220;ma chi vuoi che lo faccia?!?!?!?&#8221; e io vi rispondo dicendo solo&#8230; &#8220;più di quanti si possa immaginare&#8221;).</p>
<p>Conseguenza di tutto questo sono ore perse a cercare qualche script, sito o altro responsabile del fattaccio, con conseguenti improperi verso ogni genere di essere vivente vi si presenti vicino.</p>
<p><span id="more-103"></span>Grazie ai consigli e all&#8217;aiuto di <strong>Marco Londero</strong>, abbiamo ideato un piccolo wrapper php che genera un log sulla posta che viene inviata trmamite il comando <strong>mail()</strong> di php, e aggiunge un <strong>header</strong> all&#8217;interno dell&#8217;email stessa in grado di permetterci di risalire al log desiderato e riuscire ad identificare meglio l&#8217;origine di un certo problema.</p>
<p>All&#8217;interno di tale log avremo una cosa molto importante, il path dello script che ha generato e inviato l&#8217;email in questione.</p>
<p>Siamo partiti a partire un <a href="http://gregmaclellan.com/blog/sendmail-wrapper/" title="Sendmail Wrapper">wrapper</a> trovato su <a href="http://www.gregmaclellan.com/">groogsblog</a> e tramite semplici modifiche siamo riusciti ad ottenere quel che ci serviva.</p>
<p>Una definizione di <strong>wrapper</strong> (giusto per capire di cosa si parla) potrebbe essere la seguente &#8220;<em>Un <strong><span class="QUOTE">wrapper</span></strong> è uno script di shell che       incorpora una utility o un comando di sistema. Questo evita di       dover digitare una serie di parametri che andrebbero passati       manualmente a quel comando.</em>&#8221;</p>
<p>Vediamo ora come installarlo.</p>
<p>Presupponiamo di utilizzare postfix (di fatto si potrebbe usare qualunqua altro sistema senza problemi),</p>
<p><code>cd /etc/postfix/</code></p>
<p><code>touch sendmail.php</code></p>
<p><code>chmod 775 sendmail.php</code></p>
<p><code>nano sendmail.php</code></p>
<p>A questo punto nel file sendmail.php inseriamo il codice del <a href="http://www.temporini.net/wp-content/uploads/2007/11/sendmailtar.gz" title="Sendmail Wrapper">Wrapper</a>, e salviamo il file.</p>
<p>Modifichiamo olra il file php.ini e permettiamo al wrapper di essere eseguito prima di sendmail (sarà il wrapper stesso dal suo interno a richiamare sendmail al momento opportuno).</p>
<p><code>nano /etc/php.ini</code></p>
<p>sostituiamo il valore di sendmail_path con il seguente</p>
<p>sendmail_path = /etc/postfix/sendmail.php</p>
<p>Prepariamo le directory che conterranno i log che che genererà il nostro simpatico wrapper</p>
<p><code>mkdir /var/log/phpmail<br />
chown root:apache /var/log/phpmail<br />
chmod 770 /var/log/phpmail</code></p>
<p>ed ora non ci resta altro che riavviare apache<br />
<code><br />
/etc/init.d/apache2 restart</code></p>
<p>Date una controllata al file /var/log/httpd/error_log per vedere che sia tutto corretto e aspettate (o create uno script in php per testarlo), ora quando verrà inviata un&#8217;email da uno script in php accadranno due cose</p>
<p>1- nell&#8217;header dell&#8217;email vi sarà un campo nuovo che si chiama X-MsgID e che altro non è che il nome del file in /var/log/phpmail/ che contiene i dati dell&#8217;email inviata dal webserver</p>
<p>2- all&#8217;interno del file relativo all&#8217;header X-MsgID vi sarà un campo che indicherà il path dello script che ha inviato un&#8217;email</p>
<p>Riporto di seguito un esempio del contenuto del file di log di un&#8217;email</p>
<p><em>Body: 574 bytesDate: Fri, 23 Nov 2007 16:35:37 +0100<br />
PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2<br />
Msg ID: ns3.eastitaly.it_20071123163537.4746f3495849d</em></p>
<p><em>Message:<br />
&#8212;&#8212;&#8212;-<br />
To: tusysweelszew@mail.ru<br />
Subject: Welcome to www.</em><em>XXX.TLD</em><em> Forums<br />
Reply-to: info@</em><em>XXX.TLD</em><br />
<em> From: info@</em><em>XXX.TLD</em><br />
<em> Return-Path: info@</em><em>XXX.TLD</em><br />
<em> Message-ID: &lt;aace212218a818186b114bcd1fe00573@www.</em><em>XXX.TLD</em><em>&gt;<br />
MIME-Version: 1.0<br />
Content-type: text/plain; charset=iso-8859-1<br />
Content-transfer-encoding: 8bit<br />
Date: Fri, 23 Nov 2007 16:35:37 +0100<br />
X-Priority: 3<br />
X-MSMail-Priority: Normal<br />
X-Mailer: PHP<br />
X-MimeOLE: Produced By phpBB2<br />
X-MsgID: ns3.eastitaly.it_20071123163537.4746f3495849d<br />
&#8212;&#8212;&#8212;-<br />
Body: 574 bytes</em></p>
<p>Da questo log oltre a tutti i dati tipici di un&#8217;email si può notare la riga</p>
<p><em> PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2</em></p>
<p>che non è altro che il path dello script che ha inviato l&#8217;email, chiaramente sarebbe più efficiente se vi fosse la possibilità di identificare direttamente il nome dello script, ma diciamo che già così gran parte dei problemi si riescono a isolare e identificare in breve tempo.</p>
<p>Un altra eventuali miglioria che si può apportare è di gestire tutto questo anzichè come file separati come un unico file di log, ma lo faremo col tempo e con la voglia come sempre <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Saluti</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/wrapper-sendmail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH: Autenticazione senza password</title>
		<link>http://www.temporini.net/ssh-autenticazione-senza-password</link>
		<comments>http://www.temporini.net/ssh-autenticazione-senza-password#comments</comments>
		<pubDate>Thu, 19 Jul 2007 15:05:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IPv4]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[reti]]></category>
		<category><![CDATA[RSA]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.temporini.net/archives/37</guid>
		<description><![CDATA[<p>In questo breve articolo descriverò brevemente come configurare l&#8217;accesso ad una shell senza dover digitare ogni volta la password, tramite scambio di chiavi RSA sfruttando il protocollo OpenSSH.</p> <p>Mi è tornata utile tale funzione per gestire un backup incrementale remoto tramite rsync (magari un giorno scrivo due righe anche su questo così magari qualcuno mi [...]]]></description>
			<content:encoded><![CDATA[<p>In questo breve articolo descriverò brevemente come configurare l&#8217;accesso ad una shell senza dover digitare ogni volta la password, tramite scambio di chiavi <strong>RSA</strong> sfruttando il protocollo <a href="http://www.openssh.org/" title="OpenSSH">OpenSSH</a>.</p>
<p>Mi è tornata utile tale funzione per gestire un backup incrementale remoto tramite <em>rsync</em> (magari un giorno scrivo due righe anche su questo così magari qualcuno mi da qualche consiglio), appoggiandomi sul protocollo criptato fornito dal servizio <a href="http://www.openssh.org/" title="OpenSSH">OpenSSH</a>.</p>
<p>Ipotizziamo di operare in una <strong>LAN</strong> nella sottorete 192.168.0.0/24 e che la macchina da cui vogliamo effettuare l&#8217;accesso senza password sia la 192.168.0.2, mentra quella su cui vogliamo loggarci senza password sia la 192.168.0.3.</p>
<p>Dalla macchina dalla quale ci si vuole connettere senza digitare la password  (192.168.0.2), digitiamo il seguente comando per generare la chiave <strong>RSA</strong></p>
<p><em>[root@192.168.0.2 ]# ssh-keygen -b 2048 -t rsa</em></p>
<p><em>Generating public/private rsa key pair.<br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Your identification has been saved in /root/.ssh/id_rsa.<br />
Your public key has been saved in /root/.ssh/id_rsa.pub.<br />
The key fingerprint is:<br />
f7:ec:0d:c8:f4:df:7a:6c:2b:1d:a1:59:ee:c7:ae:a0 </em><em>root@192.168.0.2</em></p>
<p>Ora copiamo la chiave che abbiamo generato nella macchina di destinazione</p>
<p><em>[root@192.168.0.2 ]# scp /root/.ssh/id_rsa.pub root@192.168.0.3:. </em></p>
<p>Logghiamoci ora nella macchina alla quale ci si vuole connettere senza utilizzare la password e digitiamo il seguente comando</p>
<p><em>[root@192.168.0.3 ]#cat /root/id_rsa.pub &gt;&gt; /root/.ssh/authorized_keys</em></p>
<p>Finito, adesso dalla macchina 192.168.0.2 potremo loggarci sulla 192.168.0.3 senza digitare alcunapassword, ma non viceversa.</p>
<p>Questa tecnica può essere usata per gestire le connessioni tramite rsync appoggiandosi al protocollo <a href="http://www.openssh.org" title="OpenSSH Official Site">OpenSSH</a>.</p>
<p><em>[root@192.168.0.2 ~]# ssh root@</em><em>192.168.0.3</em><br />
<em>Last login: Thu Jul 19 15:20:29 2007 from </em><em>192.168.0.2</em><br />
<em>[root@</em><em>192.168.0.3</em><em> ~]#</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/ssh-autenticazione-senza-password/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Configurazione snmp</title>
		<link>http://www.temporini.net/configurazione-snmp</link>
		<comments>http://www.temporini.net/configurazione-snmp#comments</comments>
		<pubDate>Wed, 20 Jun 2007 09:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CPU]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Memoria]]></category>
		<category><![CDATA[monitor risorse]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[ncftp]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[Snmp]]></category>
		<category><![CDATA[Swap]]></category>
		<category><![CDATA[TCP]]></category>

		<guid isPermaLink="false">http://www.temporini.net/archives/27</guid>
		<description><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di snmp su un server linux, per il monitoraggio delle risorse. Provvede poi a integrare i dati raccolti tramite grafici generati con Mrtg.</p> <p>Questa guida è stata sviluppata su sistemi Fedora Core 5, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche [...]]]></description>
			<content:encoded><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di <strong>snmp</strong> su un server <strong>linux</strong>, per il <strong>monitoraggio delle risorse</strong>. Provvede poi a integrare i dati raccolti tramite grafici generati con <strong><a href="http://oss.oetiker.ch/mrtg/" title="MRTG - Tobi Oetiker's MRTG">Mrtg</a></strong>.</p>
<p>Questa guida è stata sviluppata su sistemi <strong>Fedora Core 5</strong>, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche ad altri sistemi (<a href="http://www.debian.org" title="Debian -- il Sistema Operativo Universale"><strong>Debian</strong></a>, <strong><a href="http://www.slackware.org" title="The Slackware Linux Project">Slackware</a> </strong>con piccole modifiche inereti al sistema di pacchettizzazione).</p>
<p><em><strong>1. Installazione e configurazione Snmpd</strong></em></p>
<p>Per prima cosa provvediamo a installare il servizio <strong>snmpd </strong>tramite i pacchetti disponibili della nostra distribuzione:<br />
<em>[root@localhost ~] yum install net-snmp-utils net-snmp</em></p>
<p>per Debian i pacchetti si installano con il seguente comando</p>
<p><em>[root@localhost ~] apt-get install snmpd snmp</em></p>
<p>A questo punto controllate se il demone <strong>snmpd </strong>è stato lanciato<br />
<em>[root@localhost ~] ps -aux | grep snmpd</em></p>
<p>dovreste visualizzare qualcosa tipo</p>
<p><em>root   5512  0.0  2.3  5872 3012 pts/0    S    22:04   0:00 /usr/sbin/snmpd</em></p>
<p>Se il demone non è in esecuzione provare a lanciarlo a mano con il seguente comando</p>
<p><em>[root@localhost ~] /etc/init.d/snmpd restart</em></p>
<p>e ricontrollate il suo stato.</p>
<p>Per aggiungere lo script all&#8217;avvio della macchina basta eseguire<br />
<em>[root@localhost ~] chkconfig &#8211;level 345 snmpd on</em></p>
<p>Ora il demone snmpd è correttamente in esecuzione, proviamo a controllarne il corretto funzionamento tramite una semplice query sulle interfacce di rete:</p>
<p><em>[root@ns9 ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndexIP-MIB::ipAdEntIfIndex.81.208.101.XXX = INTEGER: 2IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1<br />
IP-MIB::ipAdEntIfIndex.192.168.0.XXX = INTEGER: 3<br />
[root@ns9 ~]#</em></p>
<p>Se tutto funziona correttamente, allora il demone è correttamente configurato, se doveste avere qualche problema, è meglio controllare il file di configurazione /etc/snmp/snmpd.conf</p>
<p>All&#8217;interno di questo file modifichiamo questa linea<br />
<em> com2sec notConfigUser  default       public</em></p>
<p>e sostituiamola con quella di seguito adattando ovviamente le subnet come preferite.</p>
<p><em> com2sec local     localhost           public<br />
com2sec mynetwork 192.168.0.0/24      public</em></p>
<p>Scendendo ancora nel file cercate la stringa</p>
<p><em>group   notConfigGroup v1           notConfigUser<br />
group   notConfigGroup v2c           notConfigUser</em></p>
<p>e sostituitela con</p>
<p><em>group MyRWGroup v1         local<br />
group MyRWGroup v2c        local<br />
group MyRWGroup usm        local<br />
group MyROGroup v1         mynetwork<br />
group MyROGroup v2c        mynetwork<br />
group MyROGroup usm        mynetwork</em></p>
<p>Cerchiamo ora la stringa seguente</p>
<p><em>view    systemview     included      system</em></p>
<p>e sostituiamola con</p>
<p><em>view all    included  .1                               80</em></p>
<p>Abbiamo quasi finito&#8230; cercate la stringa</p>
<p><em>access  notConfigGroup &#8220;&#8221;      any       noauth    exact  systemview none none</em></p>
<p>e sostituitela con</p>
<p><em>access MyROGroup &#8220;&#8221;      any       noauth    exact  all    none   none<br />
access MyRWGroup &#8220;&#8221;      any       noauth    exact  all    all    none</em></p>
<p>Ed ora l&#8217;ultima stringa da modificare<br />
<em>syslocation Unknown (edit /etc/snmp/snmpd.conf)<br />
syscontact Root root@localhost (configure /etc/snmp/snmp.local.conf)</em></p>
<p>queste stringhe sono delle brevi stringhe descrittive per l&#8217;identificazione del vostro sistema, fondamentalmente potete scriverci cosa volete io ho messo questo</p>
<p><em>syslocation Linux (FEDORA_FC5), localhost<br />
syscontact matteo@temporini.net</em></p>
<p>Bene ora se tutto è andato per il verso giusto, riavviate il demone snmp (/etc/init.d/snmpd restart) e provate a fare nuovamente la query (snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex) che a questo punto non dovrebbe darvi problemi.</p>
<p><em><strong>2. Installazione e configurazione MRTG</strong></em></p>
<p>Installiamo <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# yum install mrtg</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install mrtg</em></p>
<p>A questo punto presuppongo che abbiate un <strong>webserver </strong>correttamente funzionante (io uso <a href="http://www.apache.org" title="The Apache Software Foundation">Apache</a> ma non vi sono problemi a utilizzarne altri come <strong>ISS </strong>o <strong>Lighthttpd</strong>).</p>
<p>Presupponiamo che la root di <strong>apache </strong>stia in /var/www/html/ andiamo a creare la cartella che conterrà i nostri dati</p>
<p><em>[root@localhost ~]# mkdir -p /var/www/html/mymrtg/</em></p>
<p>ora eseguiamo il seguente comando per generare automaticamente il file di configurazione di <strong>mrtg</strong></p>
<p><em>[root@localhost ~]# cfgmaker &#8211;global &#8216;WorkDir: /var/www/html/mymrtg&#8217; &#8211;output /etc/mrtg/mymrtg.cfg public@localhost</em></p>
<p>e creiamo l&#8217;index.html del nostro sistema di monitoraggio</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>(N.B.= &#8212; sono due trattini (-) vicini ma sembrano una linea unica se fate il cut &#038; paste fate attenzione)</p>
<p>Ora è tutto pronto non ci resta che eseguie <strong>mrtg </strong>indicandogli il file di configurazione da utilizzare</p>
<p><em>[root@localhost ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>In ambiente <strong>fedora </strong>è necessaria la stringa env LANG=C, su altri sistemi probabilmente questa variabile di ambiente è già settata in questo modo per cui potrebbe bastare solamente</p>
<p><em>[root@localhost ~]# /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>A questo punto non rimane che vedere il risultato di tutto il nostro lavoro andando al seguente indirizzo http://www.your.com/mymrtg/ o http://localhost/mymrtg/</p>
<p>L&#8217;ultimo step da seguire consiste nel mettere in <strong>crontab </strong>l&#8217;esecuzione dello script di aggiornamento di <strong>mrtg</strong>, il modo più semplice per farlo è con il comando</p>
<p><em>[root@localhost ~]# crontab -e</em></p>
<p>Vi si aprirà una finestra e qui inseriteci</p>
<p><em>*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>lo script verrà lanciato ogni 5 minuti, in tal modo i campionamenti verranno aggiornati sui nostri grafici in ogni 5 minuti. Qualora voleste avere stime più precise potete diminuire il tempo di campionamento ad 1 minuto ad esempio ottenendo così risultati più accurati.</p>
<p><em><strong>3. Ulteriori risorse da monitorare</strong></em></p>
<p>Quanto sino ad ora visto, permette di creare un piccolo sistema di monitoraggio per la banda utilizzata dai vari dispositivi di rete, in un tempo realtivamente ristretto e con una buona accuratezza (questo dipende ovviamente dall&#8217;intervallo di campionamento che si sceglie).</p>
<p>La domanda a questo punto che uno potrebbe porsi è &#8220;ma posso monitorare solo la banda o anche altre risorse?&#8221;.</p>
<p>Ovviamente la risposta è si, è possibile monitorare altri risorse di sistema, cosa che si è resa molto utile per identificare anomalie nei sitemi e risolverle (es.: utilizzi intensivi della cpu da parte di particolari processi in determinate ore della giornata).</p>
<p>Riporterò ora delle piccole porzioni di codice da aggiungere al file /etc/mrtg/myrtgc.cfg per aggiungere queste funzionalità.</p>
<p>3.1 Monitoraggio dell&#8217;utilizzo di <strong>CPU</strong></p>
<p><em>#<br />
# CPU Monitoring<br />
# (Scaled so that the sum of all three values doesn&#8217;t exceed 100)<br />
#</em></p>
<p><em>Target[server.cpu]:ssCpuRawUser.0&amp;ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&amp;ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&amp;ssCpuRawNice.0:public@localhost<br />
Title[server.cpu]: Server CPU Load<br />
PageTop[server.cpu]: &lt;H1&gt;CPU Load &#8211; System, User and Nice Processes&lt;/H1&gt;<br />
MaxBytes[server.cpu]: 100<br />
ShortLegend[server.cpu]: %<br />
YLegend[server.cpu]: CPU Utilization<br />
Legend1[server.cpu]: Current CPU percentage load<br />
LegendI[server.cpu]: Used<br />
LegendO[server.cpu]:<br />
Options[server.cpu]: growright,nopercent<br />
Unscaled[server.cpu]: ymwd </em></p>
<p>3.2 Monitoraggio dell&#8217;utilizzo della <strong>memoria </strong>totale rispetto a quella disponibile</p>
<p><em>#<br />
# Memory Monitoring (Total Versus Available Memory)<br />
#</em></p>
<p><em>Target[server.memory]: memAvailReal.0&amp;memTotalReal.0:public@localhost<br />
Title[server.memory]: Free Memory<br />
PageTop[server.memory]: &lt;H1&gt;Free Memory&lt;/H1&gt;<br />
MaxBytes[server.memory]: 100000000000<br />
ShortLegend[server.memory]: B<br />
YLegend[server.memory]: Bytes<br />
LegendI[server.memory]: Free<br />
LegendO[server.memory]: Total<br />
Legend1[server.memory]: Free memory, not including swap, in bytes<br />
Legend2[server.memory]: Total memory<br />
Options[server.memory]: gauge,growright,nopercent<br />
kMG[server.memory]: k,M,G,T,P,X</em></p>
<p>3.3  Percentuale di utilizzo della <strong>Memoria</strong></p>
<p><em>#<br />
# Memory Monitoring (Percentage usage)<br />
#<br />
Title[server.mempercent]: Percentage Free Memory<br />
PageTop[server.mempercent]: &lt;H1&gt;Percentage Free Memory&lt;/H1&gt;<br />
Target[server.mempercent]: ( memAvailReal.0&amp;memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&amp;memTotalReal.0:public@localhost )<br />
options[server.mempercent]: growright,gauge,transparent,nopercent<br />
Unscaled[server.mempercent]: ymwd<br />
MaxBytes[server.mempercent]: 100<br />
YLegend[server.mempercent]: Memory %<br />
ShortLegend[server.mempercent]: Percent<br />
LegendI[server.mempercent]: Free<br />
LegendO[server.mempercent]: Free<br />
Legend1[server.mempercent]: Percentage Free Memory<br />
Legend2[server.mempercent]: Percentage Free Memory</em></p>
<p>3.4. Nuove connessioni <strong>TCP</strong></p>
<p><em>#<br />
# New TCP Connection Monitoring (per minute)<br />
#</em></p>
<p><em>Target[server.newconns]: tcpPassiveOpens.0&amp;tcpActiveOpens.0:public@localhost<br />
Title[server.newconns]: Newly Created TCP Connections<br />
PageTop[server.newconns]: &lt;H1&gt;New TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.newconns]: 10000000000<br />
ShortLegend[server.newconns]: c/s<br />
YLegend[server.newconns]: Conns / Min<br />
LegendI[server.newconns]: In<br />
LegendO[server.newconns]: Out<br />
Legend1[server.newconns]: New inbound connections<br />
Legend2[server.newconns]: New outbound connections<br />
Options[server.newconns]: growright,nopercent,perminute</em></p>
<p>3.5 Connessioni <strong>TCP </strong>stabilite</p>
<p><em>#<br />
# Established TCP Connections<br />
#</em></p>
<p><em>Target[server.estabcons]: tcpCurrEstab.0&amp;tcpCurrEstab.0:public@localhost<br />
Title[server.estabcons]: Currently Established TCP Connections<br />
PageTop[server.estabcons]: &lt;H1&gt;Established TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.estabcons]: 10000000000<br />
ShortLegend[server.estabcons]:<br />
YLegend[server.estabcons]: Connections<br />
LegendI[server.estabcons]: In<br />
LegendO[server.estabcons]:<br />
Legend1[server.estabcons]: Established connections<br />
Legend2[server.estabcons]:<br />
Options[server.estabcons]: growright,nopercent,gauge</em></p>
<p>3.6 Utilizzo del <strong>disco</strong></p>
<p>L&#8217;utilizzo di questo parametro di monitoraggio richiede l&#8217;inserimento nel file /etc/snmp/snmpd.conf del seguente codice</p>
<p><em>disk /</em></p>
<p>con conseguente riavvio del demone snmpd<br />
<em>#<br />
# Disk Usage Monitoring<br />
#</em></p>
<p><em>Target[server.disk]: dskPercent.1&amp;dskPercent.1:public@localhost<br />
Title[server.disk]: Disk Partition Usage<br />
PageTop[server.disk]: &lt;H1&gt;Spazio su disco utilizzato&lt;/H1&gt;<br />
MaxBytes[server.disk]: 100<br />
ShortLegend[server.disk]: %<br />
YLegend[server.disk]: Utilization<br />
LegendI[server.disk]: Partizione /<br />
Options[server.disk]: gauge,growright,nopercent<br />
Unscaled[server.disk]: ymwd</em></p>
<p>3.7 Carichi della <strong>CPU</strong></p>
<p><em>#<br />
# Load Average<br />
#</em></p>
<p><em>Target[server.loadavg]: laLoadInt.2&amp;laLoadInt.3:public@localhost<br />
MaxBytes[server.loadavg]: 5000<br />
Title[server.loadavg]: Load Average * 100<br />
PageTop[server.loadavg]:&lt;h1&gt;Load Average * 100&lt;/h1&gt;<br />
YLegend[server.loadavg]: Load Average<br />
ShortLegend[server.loadavg]:<br />
Legend1[server.loadavg]: Load average 5 min<br />
Legend2[server.loadavg]: Load average 15 min<br />
LegendI[server.loadavg]:  5min load avg<br />
LegendO[server.loadavg]:  15min load avg<br />
Options[server.loadavg]: nopercent,growright,noinfo,gauge</em></p>
<p><strong>4. Monitoraggio del traffico email di Postfix </strong></p>
<p>Un discorso a parte va fatto per quanto riguarda il monitoraggio sull&#8217;invio e la ricezione di email tramite <strong>postfix</strong>.</p>
<p>Grazie alla documentazione trovata in rete mi è stato possibile implmentare un sistema che permette di contare il numero di email inviate e ricevute dal server di posa, nell&#8217;arco di tempo dell&#8217;intervallo di campionamento (i famosi 5 minuti). Questo viene  realizzato tramite il richiamo, da parte di <strong>mrtg</strong>, di alcuni script esterni che fanno quanto richiesto, una volta raccolti i dati vengono processati da mrtg per la generazione dei grafici.</p>
<p>Questi script che bisogna utilizzaresono scritti in perl per cui dovete installare alcuni moduli in perl tramite <strong>cpan</strong>, prima di fare questo installate <strong>ncftp </strong>che viene utilizzato da perl per scaricare i file, questo semplicemente usando il comando</p>
<p><em>[root@localhost ~]# yum install ncftp</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install ncftp</em></p>
<p>a questo punto lanciate il comando cpan e dopo aver risposto a un po&#8217; di domande, che vi chiederà lui per la corretta configurazione di della shell del <strong>perl </strong>(solitamente basta dare invio a tutte prendendo i parametri di default), eseguite il comando</p>
<p><em>[root@localhost ~]# cpan<br />
Terminal does not support AddHistory.</em></p>
<p><em>cpan shell &#8212; CPAN exploration and modules installation (v1.7602)<br />
ReadLine support available (try &#8216;install Bundle::CPAN&#8217;)</em></p>
<p><em>cpan&gt; install File::Tail</em></p>
<p>una volta finita l&#8217;installazione di questo moduletto possiamo caricare i file in <strong>perl</strong>, son tre semplici file che dovete mettere in /usr/local/bin con i permessi di esecuzione</p>
<p><a href="http://www.temporini.net/wp-content/uploads/mrtg-mailstats.pl" title="mrtg-mailstats.pl">mrtg-mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/mailstats.pl" title="mailstats.pl">mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/update-mailstats.pl" title="update-mailstats.pl">update-mailstats.pl</a></p>
<p>A questo punto non ci rimane che lanciare il processo  update-mailstats.pl (script che si occupa di tenere costantemente monitorato il traffico del <strong>mailserver</strong>) con il comando</p>
<p><em>[root@localhost ~]# /usr/local/bin/update-mailstats.pl &amp;</em></p>
<p>con il comando mailstats.pl è possibile vedere le statistiche in tempo reale sul numero totale di messaggi inviati e ricevuti come nel seguente esempio</p>
<p><em>[root@localhost ~]# mailstats.pl<br />
RECEIVED:smtp 98057<br />
SENT:local 235<br />
SENT:smtp 54423<br />
SENT:virtual 42947<br />
[root@localhost ~]#  </em></p>
<p>Aggiungiamo nel file /etc/mrtg/mymrtg.cfg il seguente codice</p>
<p><em>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
# MRTG mail cfg:  Postfix mailstats plotting with MRTG          #<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
Target[postfix]: `/usr/local/bin/mrtg-mailstats.pl`<br />
Options[postfix]: gauge, growright<br />
Title[postfix]: Postfix Statistics<br />
PageTop[postfix]: &lt;H1&gt;Postfix Statistics&lt;/H1&gt;<br />
MaxBytes[postfix]: 1000000<br />
WithPeak[postfix]: dwmy<br />
YLegend[postfix]: No. of messages<br />
ShortLegend[postfix]: messages<br />
LegendI[postfix]:  Incoming:<br />
LegendO[postfix]:  Outgoing:<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#</em></p>
<p>rigeneriamo l&#8217;index di <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>e abbiamo finito <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ora dovreste vedere, man mano che i valori vengono campionati, i grafici anche sulle mail in ingresso e in uscita di postfix. Una tecnica simile penso sia molto semplice da utilizzare anche per altri programmi e risorse.</p>
<p>Se avete suggerimenti, scritiche miglioramenti, script o teniche per il monitoraggio di altre risorse di sistema, contattatemi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/configurazione-snmp/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

