<?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>Qindel Group</title>
	<atom:link href="http://qindel.com/en/feed" rel="self" type="application/rss+xml" />
	<link>http://qindel.com/en/</link>
	<description>Ofrecemos soluciones, garantizamos resultados</description>
	<lastBuildDate>Wed, 16 Jan 2013 17:11:57 +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>New Partnerships Consolidates Qindel Group’s South American Presence</title>
		<link>http://qindel.com/en/blog-en/new-partnerships-consolidates-qindel-groups-south-american-presence</link>
		<comments>http://qindel.com/en/blog-en/new-partnerships-consolidates-qindel-groups-south-american-presence#comments</comments>
		<pubDate>Mon, 11 Jun 2012 09:27:32 +0000</pubDate>
		<dc:creator>qindel</dc:creator>
				<category><![CDATA[blog @en]]></category>

		<guid isPermaLink="false">http://qindel.com/?p=725</guid>
		<description><![CDATA[Qindel Group, the Spanish company that funds the open-source development of the QVD VDI suite, has extended its reach into Mexico and Colombia through two new partnership agreements with companies based in these regions. CIIA y Asociados. S.A de C.V., based in Mexico city and founded in 2005 to provide technology oriented services, recently signed [...]]]></description>
			<content:encoded><![CDATA[<p>Qindel Group, the Spanish company that funds the open-source development of the QVD VDI suite, has extended its reach into Mexico and Colombia through two new partnership agreements with companies based in these regions.</p>
<p><img src="http://www.ciia.com.mx/V2/images/logociia.png" alt="CIIA" /></p>
<p><a title="CIIA" href="http://www.ciia.com.mx/" target="_blank">CIIA y Asociados. S.A de C.V.</a>, based in Mexico city and founded in 2005 to provide technology oriented services, recently signed a partnership agreement with Qindel to become a certified integrator and reseller of Qindel’s QVD software. CIIA has a strong focus on networking and communications, development and systems programming, as well as the management and integration of UNIX and Linux systems. CIIA has over 100 employees providing services to CIIA’s many existing clients. Through this agreement, CIIA will be able to sell QVD license agreements and will be able to deploy and support the QVD software across the Mexican market. While Qindel already has some Mexican representation, this agreement will help Qindel to reach further into the market and to offer customers better support and representation within the region.</p>
<p><img title="logo_ct" src="http://prepro.theqvd.com/wp-content/uploads/2012/06/logo_ct1-300x87.png" alt="Catalogo Tecnologica" width="300" height="87" /></p>
<p><a title="Catalog0 Tecnologico" href="http://www.elcatalogotecnologico.com/index.php" target="_blank">Catalógo Tecnológico</a> is a Colombian company founded in 2002. Catalógo Tecnológico deals heavily in hardware and software sales, but also has a division dedicated to providing technology consulting services and support. Catalógo Tecnológico signed a partnership agreement with Qindel so that it will be able to provide integration and resale services of the QVD software within the Colombian market.</p>
<p>Both agreements require that partners have completed a rigorous training program that gives them a thorough understanding of the product that they are selling and providing support for. Qindel believes that these agreements will help its partners to find new revenue streams and will also allow Qindel to dedicate more resources toward the ongoing development of the QVD product. The newly signed partners have both shown that they have a number of potential sale leads and that they are confident that they can increase QVD adoption within their specified regions.</p>
<p>Nito Martinez, the CIO at Qindel Group, said that he was delighted with the new agreements and felt that it consolidated Qindel Group’s position in the South American market, where it has already been operating for the past 4 years. It is hoped that the agreements will help to raise QVD’s profile and increase global adoption. Qindel is currently exploring potential partnership agreements across Europe to increase the scope of its representation.</p>
<p>QVD is a Virtual Desktop Infrastructure product that takes advantage of two different virtualization techniques to provide a highly scalable and cost effective solution on open-source technology with commercial-grade support.</p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog-en/new-partnerships-consolidates-qindel-groups-south-american-presence/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tricky PAM</title>
		<link>http://qindel.com/en/blog/tricky-pam</link>
		<comments>http://qindel.com/en/blog/tricky-pam#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:22:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[PAM]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=427</guid>
		<description><![CDATA[Yes, the old fashioned Unix PAM, seems to be not too easy once you want to do non standard things. PAM: Pluggable Authentication Modules. Imagine the following situation, you have three modules, A, B and C, and you want to authenticate a user with either A or B and always succeed C. In our particular [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, the old fashioned Unix PAM, seems to be not too easy once you want to do non standard things. <a href="http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">PAM: Pluggable Authentication Modules</a>.</p>
<p>Imagine the following situation, you have three modules, A, B and C, and you want to authenticate a user with either A or B and always succeed C. In our particular case C would not authenticate by itself, that is if A and B were both false C would never authenticate by itself. That is (A v B) ^ C, or  (A || B ) &amp;&amp; C. Or better written (A v B) ^ (C v ¬C), meaning that C needs to be evaluated.</p>
<p>Reading our helpful man page pam.conf we come to the following keywords required, requisite, sufficient and optional. Let’s see:</p>
<pre>sufficient A
required B
required C
</pre>
<p>would turn out to: A v (B ^ C). That is if A is success it will never evaluate C. Having the three modules required would turn out to A ^ B ^ C, again not what we want. For that we need to use the advanced syntax for PAM:</p>
<pre>[success=ok default=ignore]      A
[success=ok default=ignore]      B
required                                   C
</pre>
<p>In this case what would happen is (although the case as we presented it, would never allow C to authenticate by itself, call it a side effect module)</p>
<pre>A B C Result
0 0 0  Failure
0 0 1  Success
0 1 0  Failure
0 1 1  Success
1 0 0  Failure
1 0 1  Success
1 1 0  Failure
1 1 1  Success
</pre>
<p>And here comes the real pam.conf entry in</p>
<pre>auth            [success=ok default=ignore]        pam_ldap.so
auth            [success=ok default=ignore]        pam_sentry.so localhost 6666
auth            sufficient      pam_unix2.so
</pre>
<p>or with the new version of pam</p>
<pre>auth            [success=ok new_authtok_reqd=ok default=ignore]        pam_ldap.so
auth            [success=ok new_authtok_reqd=ok default=ignore]        pam_sentry.so localhost 6666
auth            sufficient      pam_unix2.so
</pre>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/tricky-pam/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zimbra and corporate mail systems</title>
		<link>http://qindel.com/en/blog/zimbra-and-corporate-mail-systems</link>
		<comments>http://qindel.com/en/blog/zimbra-and-corporate-mail-systems#comments</comments>
		<pubDate>Tue, 20 Jan 2009 10:23:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[amavis]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Messaging and filtering]]></category>
		<category><![CDATA[ngnix]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=432</guid>
		<description><![CDATA[My last experience was a consultancy to migrate a corporate mail system to something else. The original system was based on several different Unices, from Debian, RedHat, Ubuntu and Solaris with the standard applications that you could imagine: Postfix as the MTA with a lot nice antispam filtering rules using Amavis with spamassassin, postgrey, RBLs [...]]]></description>
			<content:encoded><![CDATA[<p>My last experience was a consultancy to migrate a corporate mail system to something else. The original system was based on several different Unices, from Debian, RedHat, Ubuntu and Solaris with the standard applications that you could imagine:</p>
<ul>
<li>Postfix as the MTA with a lot nice antispam filtering rules using Amavis with spamassassin, postgrey, RBLs and other nice things.</li>
<li>Courier Imap with Maildir as Message Store.</li>
<li>IMP/Horde as webmail server.</li>
<li>OpenLDAP as the corporate directory service.</li>
<li>For mailing lists their choice was mailman.</li>
</ul>
<p>If you ask me, that is the first thing that would come to mind to an old fashioned mail guy as me, well, actually I would use sendmail with mailscanner (I know too old…), and I was missing mailfromd (if you haven’t heard of it, have a look you will like it if you want to play nice milter rules)</p>
<p>Their first choice was MS-Exchange, and the reasoning behind it was the ease of administration. If you take in account the cost of a sysadmin with all the relevant knowledge and to be able to administer this on a 24×7 basis you end up easily for a medium platform with a lot of human resources. Just ask yourselves how many people do you know that know enough to handle a spam attack and know what to do with the necessary confidence. I can probably count around 20, and most of them are in the company where we are used to deal with this kind of problems….</p>
<p>On the other hand I am rather fond of Open Source Solutions, so I asked around, and some of my colleagues had implemented Zimbra, so I decided to give it a try and I have to say that I like it (well did I say that I would have used sendmail instead of postfix? <img src="http://blog.qindel.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley"> , although I have to admit that the architecture of Postix outweights the one of sendmail…).</p>
<p>So what is Zimbra you might ask. Well plainly it is an opensource platform with commercial support:</p>
<p><img src="http://qindel.com/wp-content/uploads/2009/01/arq-zimbra.png" alt="Zimbra architechture" /></p>
<ul>
<li>MTA is Postfix with Amavis and Spamassissin.</li>
<li>ngnix as web and imap/pop3 proxy.</li>
<li>openldap which holds a central configuration for all the components. Replication is obviously also supported. There is a schema for the application, and you can use another one for the email users. Authentication can be delegated to other LDAP or AD server.</li>
<li>The message store is something like the following: messages are stored in files and the index to the messages and attachments is done in a mysql db mapping userids and files. Obviously for a multiple destination email only one copy is saved.</li>
<li>the webmail platform directly is directly hosted in the message store, and it uses jetty as the web application server. It has also three different interfaces. W3C HTML, AJAX (which remembers to Yahoo, …) and simple HTML for mobile devices…</li>
</ul>
<p>Now a nice picture for the Zimbra webmail server</p>
<p><img src="http://qindel.com/wp-content/uploads/2009/01/zimbra-mail.png" alt="Zimbra capture" /></p>
<ul>
<li>It also has calendaring support integrated. So very nice as well.</li>
</ul>
<p>About the nice commercial options are (the ones that I was most interested in):</p>
<ul>
<li>Offline storage for emails (two level storage).</li>
<li>Cluster support for RH cluster. Although in my case that was not worth to go for commercial support.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/zimbra-and-corporate-mail-systems/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swiss Army knife for different protocols</title>
		<link>http://qindel.com/en/blog/swiss-army-knife-for-different-protocols</link>
		<comments>http://qindel.com/en/blog/swiss-army-knife-for-different-protocols#comments</comments>
		<pubDate>Thu, 18 Sep 2008 09:26:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[kamailio]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[OpenSER]]></category>
		<category><![CDATA[OpenSIPS]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[SMTP]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=436</guid>
		<description><![CDATA[Today we had a discussion about generic swiss army knife tools: - Apache and the mod_rewrite module. That is applying regular expressions to URL, Cookies, query elements, etc… It is effectively a router to be able to rewrite URLs, change destination of the requests based on URLs, change headers, etc… - mailfromd for sendmail (or [...]]]></description>
			<content:encoded><![CDATA[<div class="entry">
<p>Today we had a discussion about generic swiss army knife tools:</p>
<p>- <a href="http://httpd.apache.org" onclick="javascript:pageTracker._trackPageview ('/outbound/httpd.apache.org');">Apache</a> and the <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" onclick="javascript:pageTracker._trackPageview ('/outbound/httpd.apache.org');">mod_rewrite module</a>. That is applying regular expressions to URL, Cookies, query elements, etc… It is effectively a router to be able to rewrite URLs, change destination of the requests based on URLs, change headers, etc…</p>
<p>- <a href="http://puszcza.gnu.org.ua/projects/mailfromd/" onclick="javascript:pageTracker._trackPageview ('/outbound/puszcza.gnu.org.ua');">mailfromd</a> for <a href="http://www.sendmail.org" onclick="javascript:pageTracker._trackPageview ('/outbound/www.sendmail.org');">sendmail</a> (or any other milter filter). This effectively allows you to do a lot of online checks in realtime to help you to fight against spam.</p>
<p>- OpenSer, now split into <a href="http://www.opensips.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.opensips.org');">OpenSips</a> and <a href="http://www.kamailio.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.kamailio.org');">Kamailio</a>. I see this the equivelent of the mod_rewrite module in the SIP world <img src="http://blog.qindel.com/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley"> </p>
<p>- Non opensource, but to the same level you can do also do protocol manipulation for LDAP with the <a href="http://symlabs.com/products/ldap-proxy" onclick="javascript:pageTracker._trackPageview ('/outbound/symlabs.com');">LDAP Proxy</a> from Sy</p>
<p>Sure that there are others, but these are really useful for the things that we do…</p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/swiss-army-knife-for-different-protocols/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log realtime monitoring with SNMP</title>
		<link>http://qindel.com/en/blog/log-realtime-monitoring-with-snmp</link>
		<comments>http://qindel.com/en/blog/log-realtime-monitoring-with-snmp#comments</comments>
		<pubDate>Mon, 07 Jul 2008 09:28:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[cricket]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[mib]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[net-snmp]]></category>
		<category><![CDATA[Network management]]></category>
		<category><![CDATA[nms]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[rrd]]></category>
		<category><![CDATA[SNMP]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=439</guid>
		<description><![CDATA[How often have you been in the need to get some log statistics? I have seen many packages around, in particular those monitoring some specific internet applications (web, ftp, mail, …), everybody knows stats packages like analog and webalizer, if we are talking about web you can also use Google Analytics. But more often than [...]]]></description>
			<content:encoded><![CDATA[<div class="entry">
<p>How often have you been in the need to get some log statistics? I have seen many packages around, in particular those monitoring some specific internet applications (web, ftp, mail, …), everybody knows stats packages like <a href="http://www.analog.cx/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.analog.cx');">analog</a> and <a href="http://www.mrunix.net/webalizer/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mrunix.net');">webalizer</a>, if we are talking about web you can also use <a href="http://www.google.com/analytics/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">Google Analytics</a>.</p>
<p>But more often than not, you always face one of the following problems:</p>
<ul>
<li>The log format is not the standard web log
</li>
<li>You need realtime info.
</li>
</ul>
<p>In the first case you end up writing your own parser of the log file (unless you have written the application, but then we would come on which are the requirements of the application, and why was monitoring not included). We usually do that in perl, although I have seen parsers in many languages including shell, and even Java…</p>
<p>But in the second case, what you would need is an online parser which gets you statistics by parsing incrementally the log files.</p>
<p><img src="http://qindel.com/wp-content/uploads/2008/07/internet.png" alt="Image" /></p>
<p>Who has not used <a href="http://oss.oetiker.ch/mrtg/" onclick="javascript:pageTracker._trackPageview ('/outbound/oss.oetiker.ch');">MRTG</a>, <a href="http://www.cacti.net/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.cacti.net');">Cacti</a>, <a href="http://cricket.sourceforge.net/" onclick="javascript:pageTracker._trackPageview ('/outbound/cricket.sourceforge.net');">Cricket</a>, or any of those <a href="http://oss.oetiker.ch/rrdtool/" onclick="javascript:pageTracker._trackPageview ('/outbound/oss.oetiker.ch');">RRD</a> applications that allow you to see how well your Internet line is doing?</p>
<p>In our case we have come up with a little solution, which might seem quite hard at the beginning but that does the job quite well. We use the combination of 4 elements:</p>
<ul>
<li><a href="http://www.net-snmp.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.net-snmp.org');">Net-SNMP</a>. This provides us with the tools to speak the SNMP protocol.
</li>
<li><a href="http://search.cpan.org/~nito/SNMP-MibProxy-1.0771/lib/SNMP/MibProxy.pm" onclick="javascript:pageTracker._trackPageview ('/outbound/search.cpan.org');">SNMP MibProxy</a>. This provides us a neat clean interface to the snmpd daemon.
</li>
<li><a href="http://search.cpan.org/~nito/SNMP-LogParser-1.0767/lib/SNMP/LogParser.pm" onclick="javascript:pageTracker._trackPageview ('/outbound/search.cpan.org');">SNMP Logparser</a>. This is our online and incremental log parser build template.
</li>
<li><a href="http://www.cacti.net" onclick="javascript:pageTracker._trackPageview ('/outbound/www.cacti.net');">Cacti</a>. We use cacti to display graphs, although we have used others like opennms, cricket, mrtg, (or other non opensource software).
</li>
</ul>
<p>Ok, now we have these 4 different tools and the question is how we build them together? I will not get into the specific details, please use the man page of snmpd, the documentation of cacti and the POD of the specific perl modules for that, but I will try to highlight which are the main steps of getting this right.</p>
<ol>
<li> Create the MIB for the counters and stats that you want to monitor. I will not get into the details of this here. My quick recomendation is that you copy one of the existing mibs and change them to suit your own needs (in my computer you can find it in /usr/share/snmp/mibs/IF-MIB.txt). See among <a href="http://www.ietf.org/rfc/rfc1212.txt" onclick="javascript:pageTracker._trackPageview ('/outbound/www.ietf.org');">RFC1212</a> and others (http://www.ietf.org/rfc/rfc1902.txt).
</li>
<li>Create the interface in snmpd with MibProxy. This is accomplished by adding the following line to snmpd.conf (obviously you need to change the OID):<br />
 pass_persist .1.3.6.1.4.1.17171.1.8 /usr/local/bin/mibProxy
</p>
</li>
<li>Test the interface with snmpget. For this you need to add a static value to the mib counters in /var/lib/mibProxy/logparser.properties<br />
 myDescr.0=test2<br />
 myCounter.0=21<br />
If you get your 21 from the command line “snmpget localhost myCounter.0″ then you are in the right track, if this doesn’t work, please check the man page for mibProxy.
</p>
</li>
<li>Create a SNMP::LogparserDriver subclass which should implement the following methods: evalBegin, evalIterate, evalEnd. These methods will allow you to easily parse the info that you need and leave them in the former /var/lib/mibProxy/logparser.properties
</li>
<li>Run the logparser script, which will invoke your specific class, from cron, every 5 minutes for example.
</li>
<li>Graph the results in cacti via SNMP
</li>
</ol>
<p>Here are some of the things that we have used this for:</p>
<ul>
<li> Show the rate of new subscribers. Very useful for new campaign launches in marketing.
</li>
<li> Show the number of purchase transactions per seconds (including failed transactions)
</li>
<li> Get this nicely displayed on a handset, so that you always know how things are going
</li>
<li> plug this info to an NMS system, to alert whenever the number of transactions were lower than expected.
</li>
<li> Create dashboards which reflected the business as a whole. Just to note that some of them were used as much by the Technology guys as well as the marketing guys, providing a real good team building, and common objectives…
</li>
</ul>
<p>I hope you enjoyed this one as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/log-realtime-monitoring-with-snmp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk as Ringback tones solution</title>
		<link>http://qindel.com/en/blog/asterisk-as-ringback-tones-solution</link>
		<comments>http://qindel.com/en/blog/asterisk-as-ringback-tones-solution#comments</comments>
		<pubDate>Wed, 02 Jul 2008 09:30:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[IVR]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[RBT]]></category>
		<category><![CDATA[Rinback Tone]]></category>
		<category><![CDATA[SNMP]]></category>
		<category><![CDATA[telco]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=442</guid>
		<description><![CDATA[This is one of this Telco proposition that Qindel offers to their customers. A lot of people use Asterisk as a PBX, and it does its job quite well. In fact, there is a lot of competition in this area, other players have taken the Open Source Asterisk and have put some nice graphical interfaces [...]]]></description>
			<content:encoded><![CDATA[<p>This is one of this Telco proposition that Qindel offers to their customers. A lot of people use Asterisk as a PBX, and it does its job quite well. In fact, there is a lot of competition in this area, other players have taken the Open Source Asterisk and have put some nice graphical interfaces around them such as <a href="http://www.trixbox.com" onclick="javascript:pageTracker._trackPageview ('/outbound/www.trixbox.com');">Trixbox</a> or <a href="http://www.digium.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.digium.com');">Switchbox</a>. Here comes another proposition using Asterisk as a Ringback Tones solution.</p>
<p>So what is a Ringback Tone solution? It is that music that you hear when you dial someone on your mobile phone. Obviously this tone can depend on who is calling and of group of callers.</p>
<p>Well asterisk has that play tones functionality, and deciding what tone to play depending on the callerId is simply a database lookup.</p>
<p>So how has Qindel implemented this:<br />
- Using Asterisk as the IVR (this could be connected via SS7, QSIG, SIP, H.323, …)<br />
- Using as the backend an LDAP database. The LDAP databases have natively support for replication, and are optimized for reads, with penalization on writes, although Asterisk supports LDAP from 1.6, there is a patch from 1.4 onwards and we currently use the lookup inside the AGI script.<br />
- Using an AGI script to do the database lookup (Do you know the Net::Server and the Asterisk::FastAGI perl modules?)</p>
<p>The challenge in all the real operators is then the provisioning and the monitoring. Provisioning, is really operator dependent and I won’t get into it today (this is a discussion for another day), but monitoring can be easily achieved with Nagios and Cacti (another one which should have its own discussion, in particular with Qindel’s CMDB), and the native support of Asterisk for SNMP (from version 1.4.x)</p>
<p>I hope you enjoyed this entry. </p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/asterisk-as-ringback-tones-solution/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sendmail MTA replacing a Sun Messaging server MTA</title>
		<link>http://qindel.com/en/blog/sendmail-mta-replacing-a-sun-messaging-server-mta</link>
		<comments>http://qindel.com/en/blog/sendmail-mta-replacing-a-sun-messaging-server-mta#comments</comments>
		<pubDate>Sat, 24 May 2008 09:31:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[alias]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mailbox]]></category>
		<category><![CDATA[mailDeliveryOption]]></category>
		<category><![CDATA[Messaging and filtering]]></category>
		<category><![CDATA[MTA]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[sun messaging server]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=445</guid>
		<description><![CDATA[This little post is about trying to substitute the Sun Messaging server MTA with a sendmail MTA with as little disruption as possible. Imagine the following situation: - You have several Sun MTAs - You have several Sun Messaging Stores - All the mail routing and delivery information is a replicated LDAP infrastructure The first [...]]]></description>
			<content:encoded><![CDATA[<p>This little post is about trying to substitute the Sun Messaging server MTA with a sendmail MTA with as little disruption as possible.</p>
<p>Imagine the following situation:<br />
- You have several Sun MTAs<br />
- You have several Sun Messaging Stores<br />
- All the mail routing and delivery information is a replicated LDAP infrastructure</p>
<p>The first question that would arise is why would you like to change, and coming later to the results you will see that in terms of LDAP lookups Sun Messaging Server is more efficient than sendmail.</p>
<p>The reasoning behind this, in our case, was that we were using sendmail as a filtering platform for antivirus and spam. You know, spamassassin, mailscanner, and the like… And what would be your choice:</p>
<p>1) Putting another set of MTAs in front of the existing Sun MTAs. This would be the preferred choice as an external managed service, but could also be done in the customer premises.<br />
2) Replacing the existing Sun Messaging MTAs with sendmail (just to reduce the hardware costs).</p>
<p>In the second case the sendmail MTA has to mimic the behaviour of the Sun Messaging MTA. This particularly means, that we are going to avoid another SMTP hop, and obviously reduce hardware as well.</p>
<p>Let’s get a bit into the technical details, and revise the LDAP main features that we have to mimic (we will not get into the full detail, but rather, get into the two important bits):</p>
<p>- <b>Message store selection for incoming mail</b>. See the <a href="http://docs.sun.com/app/docs/doc/819-2657/6n4ub3hms?a=view" onclick="javascript:pageTracker._trackPageview ('/outbound/docs.sun.com');">mailHost</a> attribute  from the inetLocalMailRecipient Class. This can be easily reproduced with the sendmail M4 feature ldap_routing:</p>
<p>FEATURE(`ldap_routing’, `ldap -1 -T<tmpf> -v mailHost -k”(&amp;(objectClass=inetLocalMailRecipient)(|(mail=%0)(mailalternateaddress=%0)))”‘, `ldap -1 -T<tmpf> -v mailRoutingAddress -k”(&amp;(objectClass=inetLocalMailRecipient)(uid=%s))”‘ , `bounce’ ) dnl</tmpf></tmpf></p>
<p>LDAPROUTE_DOMAIN(…)</p>
<p>- Email expansion for each delivery channel. This has to do with the <a src="http://docs.sun.com/app/docs/doc/819-2657/6n4ub3hme?a=view">mailDeliveryOption</a> and the two main values that  we are going to see here <b>mailbox</b> and <b>forward</b>. The first one delivers mail to the message store and the second one uses the mailForwarding address to duplicate the mail and deliver it to a different recipient.</p>
<p>The mail expansion to different recipients is one of those challenges, the only way we know of expanding an email address to several other is by using email expansion in the sendmail mailer, this can be done either by using the ALIAS feature or by using the USERDB feature. In our case we decided to use the ALIAS expansion (the USERDB does not currently work with LDAP)</p>
<p>define(`ALIAS_FILE’, `ldap:   -T<tmpf>  -v”mailforwardingaddress,mail”<br />
-k”(&amp;(objectClass=inetLocalMailRecipient)(maildeliveryoption=forward)(maildeliveryoption=mailbox)(|(mail=%0)(mailalternateaddress=%0)))”‘, /&gt;<br />
`ldap:   -T<tmpf>  -v”mail”<br />
-k”(&amp;(objectClass=inetLocalMailRecipient)(maildeliveryoption=mailbox)(|(mail=%0)(mailalternateaddress=%0)))”‘,<br />
`ldap:   -T<tmpf>  -v”mailforwardingaddress”<br />
-k”(&amp;(objectClass=inetLocalMailRecipient)(maildeliveryoption=forward)(|(mail=%0)(mailalternateaddress=%0)))”‘,<br />
)dnl</tmpf></tmpf></tmpf></p>
<p>This setting sets up the A flag in the local mailer indicating that the it should expand the addresses set up in the ALIAS_FILE. Also the behaviour of the ALIAS_FILE is that it tries to expand an alias with the first alias definition, that is if maildeliveryoption has both attributes forward and mailbox, if that doesn’t match it searches for entries with maildeliveryoption mailbox, and if that fails it tries to expand aliases with maildeliveryoption forward.</p>
<p>As you can see this is very inefficient in terms of LDAP searches. If you compare that to the Sun MTA, this one would just do one lookup to get all the attributes, but in sendmail we are doing several. That means, be warned, if you the sendmail route you will have more ldap lookups. The good news, is that your answers will be cached…</p>
<p>One last think, the delivery of the email to the message stores will be done with LMTP. The setting that we use is:</p>
<p>Mlmtp,         P=[IPC], F=AmDFMuXa0z, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,<br />
                m=4, T=DNS/RFC822/SMTP,<br />
                A=TCP $h 225</p>
<p>Well this is just a glimpse of the whole settings, but as you know each case is different. If you are bored and read this part let me know and I can post more details about the config.</p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/sendmail-mta-replacing-a-sun-messaging-server-mta/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging?</title>
		<link>http://qindel.com/en/blog/blogging</link>
		<comments>http://qindel.com/en/blog/blogging#comments</comments>
		<pubDate>Thu, 01 May 2008 15:39:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://localhost/qindel/?p=409</guid>
		<description><![CDATA[Why would a guy like me start writing a blog? Well the first reason is probably that the blogs get read. Secondly it seems like a good way to share information about things that one does, which sometimes seem not too important to put in a formal HOWTO, FAQ or even in some forums, so [...]]]></description>
			<content:encoded><![CDATA[<p>Why would a guy like me start writing a blog?</p>
<p>Well the first reason is probably that the blogs get read. Secondly it seems like a good way to share information about things that one does, which sometimes seem not too important to put in a formal HOWTO, FAQ or even in some forums, so I will write them down here.</p>
<p>Another good reason might be that Qindel tends to do too many different things and it is very hard to show them all on our corporate web page and not overwhelm with information perhaps too detailed… (is too much detail a problem?).</p>
<p>Well, enough for today, I hope you enjoy it.</p>
]]></content:encoded>
			<wfw:commentRss>http://qindel.com/en/blog/blogging/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
