Alors d’abord je reçois ceci de la part d’un mysterieux anonyme :

Qu’evidemment je m’empresse de brancher comme il se doit :

Pour obtenir ce saint Graal là :

Et donc là, je me souviens de ça, mais surtout… surtout de ÇA.
Vous deux là, Mr L. et Mr F., j’espere que vous vous en voulez bien fort de cramer mon week end de la sorte.
alors voila, pardon. Y’a -fiou- 2 ans, je bavais comme un vilain sur dspam, et là, là, eh bah je m’incline. In-cro-yable efficacité, je lui ai fait bouffer un millier de hams, un millier de spams, et pouf, le vla-t-y pas qu’il me catche un bon 96% de saloperies. Alors attention, c’est sur mon kimloli, c’est du perso, c’est pas mutualisé pour deux sous. Mais intégration à sendmail les doigts dans le nez (+ procmail):
define(`LOCAL_MAILER_PATH', `/usr/local/bin/dspam') define(`LOCAL_MAILER_ARGS', `dspam -t -Y -a $h "--deliver=innocent" --user $u -d %u')
Fonctionne nickel balle avec mon nouvel amour, lighttpd. GUI web tout ce qu’il y a de plus sobre et efficace.
Dla bonne.
Le plus pénible a été de lui faire avaler les quelques milliers de mails préalablement nettoyés du markup spamass :
$ formail -s spamassassin -d < spam_corpus > cleaned.spam.inbox $ formail -s spamassassin -d < ham_corpus > cleaned.ham.inbox
puis
$ formail -s dspam --client --user mes users --class=spam --source=corpus --mode=teft < cleaned.spam.inbox $ formail -s dspam --client --user mes users --class=innocent --source=corpus --mode=teft < cleaned.ham.inbox
Avec de chaques cotés, des mbox tronquées à grands coups de tail, wc, grep -n et autes bc.
On n'oublie pas d'ajouter le user qui possède le serveur www comme Trusted User :
Trust www
et…

…on fait un gros doigt à nos amis spammeurs.
Histoire de m’affranchir de N regles de firewalling / forwarding / nat à se faire des nœuds au cerveau à coups l’iptables, je me suis dit qu’il serait du meilleur effet d’embarquer un simple proxy SIP dans la Fonera.
Après 2/3 googlisations, j’identifie siproxyd comme le candidat idéal pour mon petit exercice.
Muni de l’environnement de développement de FON, je compile :
. libosip2 dont il dépend
. siproxyd lui même
Ça donne à peu près ça :
$ pwd
/home/imil/fonera/src/own/libosip2-2.2.2
$ export FONBUILD=/path/to/fonera/build/env
$ export FONENV=/path/to/fonera/fake/root/filesystem
$ CFLAGS=-I${FONBUILD}/staging_dir_mips/usr/include LDFLAGS="-L${FONBUILD}/staging_dir_mips/usr/lib -lcrypt" CC=mips-linux-uclibc-gcc ./configure --host=mips --disable-hashtable --prefix ${FONENV}
$ make && make install
FONBUILD est le chemin vers l’environnement de compilation décompressé
FONENV est mon point de montage CIFS mounté depuis la Fonera sur /usr/local
puis :
$ pwd
/home/imil/fonera/src/own/siproxd-0.5.13
$ CFLAGS=-I${FONBUILD}/staging_dir_mips/usr/include LDFLAGS="-L${FONBUILD}/staging_dir_mips/usr/lib -lcrypt" CC=mips-linux-uclibc-gcc ./configure --enable-fli4l-22-uclibc --enable-static --host=mips --prefix=${FONBUILD} --with-libosip-prefix=${FONBUILD}
$ make
À la fin de la compilation, j’obtiens un src/siproxyd que je scp dans l’/usr/bin de la Fonera.
Reste à créer un /etc/siproxyd.conf minimal :
if_inbound = ath1 if_outbound = eth0 sip_listen_port = 5060 daemonize = 1 silence_log = 1 log_calls = 1 registration_file = /tmp/siproxd_registrations autosave_registrations = 300 pid_file = /var/run/siproxd.pid # on active le RTP proxy rtp_proxy_enable = 1 rtp_port_low = 7070 rtp_port_high = 7089 rtp_timeout = 300 rtp_dscp = 46 default_expires = 600 debug_level = 0x00000000 debug_port = 0 # 1.2.3.4 == l'ip de l'asterisk qui va effectivement enregistrer mes SIP phones outbound_proxy_host = 1.2.3.4 outbound_proxy_port = 5060 outbound_proxy_port = 5060
Reste à ouvrir quelques ports sur la Fonera :
root@OpenWrt:/etc/init.d# tail -7 /etc/firewall.user ## -- VoIP # SIP iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 5060 -j ACCEPT iptables -A input_rule -i $WAN -p udp --dport 5060 -j ACCEPT # RTP iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 7070:7089 -j ACCEPT iptables -A input_rule -i $WAN -p udp -m udp --dport 7070:7089 -j ACCEPT
Et evidemment à entrer ces regles “à la main” pour qu’elles soient executées en live.
Moyennant quoi :
/usr/bin/siproxd
Et on admire la beauté d’un header SIP :
Sending to 4.3.2.1 : 5060 (NAT) Transmitting (NAT) to 4.3.2.1:5060: SIP/2.0 200 OK Via: SIP/2.0/UDP 4.3.2.1:5060;branch=z9hG4bKde51f2040c5392cd5619453830d27d85;received=4.3.2.1 Via: SIP/2.0/UDP 192.168.10.231:5060;branch=z9hG4bK066469ba8 From: white;tag=6af6d7ac5d3c755 To: 087XXXXXXX ;tag=as41ab49a5 Call-ID: a09785bc6c5225000878173ed3169649@192.168.10.231 CSeq: 1169873461 BYE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Contact: Content-Length: 0 X-Asterisk-HangupCause: Normal Clearing
Emouvant.

Twitter
GooglePlus
GitHub
Recent Comments