emailPoubelle.php – script libre d’email jetable

Ayant un serveur & des noms de domaines, j’utilise pour chaque site où je m’inscrit une adresse email spécifique. Je fonctionnais jusqu’à présent en catch-all (*@mercereau.info -> MonEm@il) mais c’est quand même le meilleur moyen de prendre du SPAM. Du coup j’ai fais une mini interface en PHP pour créer des alias facilement (des emails poubelles) & j’ai évidemment publier les sources ! (A installer sans modération)

Présentation

emailPoubelle.php est donc une page qu’il faut typiquement inclure dans votre site.

Le script dépend de Postfix & de la lib pear Net_DNS2.

Installation

Installation des dépendances :

srv:~$ pear install Net_DNS2

Télécharger & décompresser les sources :

srv:~$ mkdir -p /www/emailPoubelle/postfix
srv:~$ cd /tmp
srv:~$ wget -O emailPoubelle.zip http://forge.zici.fr/p/emailpoubelle-php/source/download/master/
srv:~$ unzip emailPoubelle.zip
srv:~$ cp emailpoubelle-php-master/* /www/emailPoubelle

Configurer Postfix :

srv:~$ vi /etc/postfix/main.cf
[...]
virtual_alias_maps = hash:/www/emailPoubelle/postfix/virtual
srv:~$ touch /www/emailPoubelle/postfix/virtual
srv:~$ /usr/sbin/postmap /www/emailPoubelle/postfix/virtual
srv:~$ chown www-data /www/emailPoubelle/postfix/virtual
srv:~$ chown www-data /www/emailPoubelle/postfix/virtual.db

N’hésitez pas à me faire des retours, le modifier, le partager…. bref pleins de trucs en « er »!

La pluralité est une force !

[Web-Dynamic-Dnsupdate] Administrer vos zones DNS sans base de données

Présentation

Je voulais vous présenter le projet Web-Dynamic-Dnsupdate qui est une interface web d’administration DNS sans base de donné basé sur la lib pear Net_DNS2

Mon entreprise l’utilise et m’a permis de contribuer au projet (migration vers la lib Net_DNS2 car la lib Net_DNS est obsolète)

Voir la démo :

Les points forts :

  1. C’est très pratique pour avoir un zone toujours à jour (c’est souvent le problème des interfaces avec bases de données) ;
  2. Vous ne risquez pas de planter votre zone à cause d’une erreur de syntaxe. Le protocole ce charge de valider votre syntaxe ;
  3. Le projet a été conçu avec des GET afin qu’il soit possible de l’exploiter en ligne de commande / dans un script (exemple :
    lynx --auth login:motDePasse http://dns.exemple.com/dnsupdate.php?todo=recordAdd&rr=exemple.testdom2.com.+10800+IN+CNAME+exemple.com&domain=testdom2.com 
  4. Beaucoup de type d’enregistrements supportés :
    • Par le Wizard : A AAAA CNAME NS MX TXT PTR SPF
    • Sans Wizard : A NS CNAME SOA WKS PTR HINFO MX TXT RP AFSDB X25 ISDN RT NSAP SIG KEY PX AAAA LOC EID NIMLOC SRV ATMA NAPTR KX CERT DNAME OPT APL DS SSHFP IPSECKEY RRSIG NSEC DNSKEY DHCID NSEC3 NSEC3PARAM HIP TALINK CDS SPF TKEY TSIG URI CAA TA DLV

Les manques :

  1. Projet jeune ;
  2. Il n’est pas possible de créer des zones via l’interface ;

Autoriser l’update dans bind9

Deux petites lignes sont à indiquer dans les zones que vous souhaitez laisser mettre à jour via l’interface :

...
zone "testdom2.com" {
    type master;
    allow-transfer { 192.168.2.158;};
    allow-update { 192.168.2.158; };
    file "/var/lib/bind/testdom2.com/zone";
};
...

[Debian squeeze] Serveur postfix + dovecot LDA avec OpenLdap

Un annuaire LDAP (avec le schéma misc) est déjà en place, nous souhaitons monter un serveur de mail SMTP/IMAPS en s’appuyant sur l’authentification de l’annuaire LDAP :

apt-get install postfix postfix-ldap dovecot-imapd

Postfix

Tout d’abord /etc/postfix/main.cf :

smtpd_banner = $myhostname
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = hostname.zici.fr
myorigin = /etc/mailname
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
luser_relay =
alias_maps = hash:/etc/aliases
virtual_mailbox_domains = zici.fr, mercereau.info, liencontrelien.zici.fr
virtual_alias_maps = hash:/www/zici/emailPoubelle/virtual
dovecot_destination_recipient_limit = 1
virtual_transport = dovecot
mailbox_transport = dovecot
dovecot_destination_recipient_limit = 1

Dans le fichier master.cf il suffit de rajouter la ligne suivante à la fin du fichier:

# Dovecot LDA
dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} -d ${user}

Dovecot

Il n’y a que 2 fichiers de conf, d’abord, /etc/dovecot/dovecot.conf

protocols = imap imaps
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/var/mail/%n
mail_uid = 500
mail_gid = 8
mail_privileged_group = mail
protocol imap {
imap_client_workarounds = outlook-idle
}

protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
protocol managesieve {
}
protocol lda {
postmaster_address = postmaster@zici.fr
auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
mechanisms = plain login
passdb pam {
}
passdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
userdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = mail
}
}
}
dict {
}
plugin {
}

et enfin /etc/dovecot/dovecot-ldap.conf

hosts = 127.0.0.1
auth_bind = yes
ldap_version = 3
base = ou=Utilisateur,dc=zici,dc=fr
user_attrs = uidNumber=500,gidNumber=8
user_filter = (&(objectClass=posixAccount)(cn=%n))
pass_filter = (&(objectClass=posixAccount)(cn=%n))
default_pass_scheme = SSHA

Astuce pour tester les filtres utiliser la commande

 ldapsearch -x -h localhost -b "ou=Utilisateur,dc=zici,dc=fr" '(&(objectClass=posixAccount)(cn=Utilisateur))'

Source :

  • http://www.404blog.net/?p=36
  • http://monblog.system-linux.net/blog/2011/05/12/ajouter-des-schemas-dans-votre-annuaire-openldap-avec-debian-squeeze/
  • http://www.rjsystems.nl/en/2100-d6-openldap-provider.php

[slapd.d] bdb_equality_candidates – not indexed

Logcheck me remonte ceci :

Apr  2 16:02:04 host slapd[30343]: <= bdb_equality_candidates: (memberUid) not indexed
Apr  2 16:02:04 host slapd[30343]: <= bdb_equality_candidates: (uid) not indexed
Apr  2 16:02:04 host slapd[30343]: <= bdb_equality_candidates: (cn) not indexed
Apr  2 16:02:46 host slapd[30343]: <= bdb_equality_candidates: (uid) not indexed
Apr  2 16:02:46 host slapd[30343]: <= bdb_equality_candidates: (memberUid) not indexed
Apr  2 16:09:16 host slapd[30343]: <= bdb_equality_candidates: (uid) not indexed
Apr  2 16:09:16 host slapd[30343]: <= bdb_equality_candidates: (memberUid) not indexed
Apr  2 16:12:19 host slapd[30343]: <= bdb_equality_candidates: (uid) not indexed
Apr  2 16:20:16 host slapd[30343]: <= bdb_equality_candidates: (uid) not indexed

La démarche est donc de faire indexer à slapd les champs uid, memberUid & cn

Si vous ne l’avez pas fait éditer le fichier /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif en ajoutant la ligne olcRootPW sous olcRootDN, le mot de passe est généré avec la commande slappasswd (n’oubliez pas de relancer le daemon slapd)

Pour revenir à notre problème, il faut donc éditer votre schéma via un bon éditeur (type ApacheDirectoryStudio en « cn=admin,cn=config » et le mot de passe, avec le base dn « cn=config ») Puis, dans le chemin : olcDatabase={1}hdb,cn=config ajouter la ligne :

olcDbIndex: uid,memberUid,cn eq

Connexion SSH avec clé RSA + passphrase

Pour ce connecter de façon vraiment sécurisé à vos serveur, la clé RSA et la passphrase sont un très bon début…

D’abord générer des clés

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/thouveni/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): ***********************************************
Enter same passphrase again: ***********************************************
Your identification has been saved in /home/thouveni/.ssh/id_rsa.
Your public key has been saved in /home/thouveni/.ssh/id_rsa.pub.
The key fingerprint is:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ensuite diffuser sa clé publique

$ scp ~/.ssh/id_rsa.pub [user@]host:~/.ssh/authorized_keys2
id_rsa.pub 100% 401 0.4KB/s 00:00

OU

cat $HOME/.ssh/id_rsa.pub | ssh [user@]host "mkdir -p .ssh; chmod 700 .ssh; cat >> .ssh/authorized_keys"

OU

ssh-copy-id [user@]host

Enfin tester la connexion :

$ ssh [user@]host
Enter passphrase for key '/home/user/.ssh/identity':

Valider temporairement sa passphrase :

eval 'ssh-agent'
ssh-add ~/.ssh/id_rsa

Modification de votre passphrase :

ssh-keygen -p

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.

Solution :

ssh-keygen -R IP

Perlbrew – Perl indépenant du système

PerlBrew permet d’installer une version de Perl indépendante de celle du système ce qui permet d(éviter les conflits entre les scripts maison et les paquets système.

Avec Perlbrew il est possible d’installer Perl dans le HOME d’un utilisateur ou dans un répertoire type /opt/perl5 (ce que nous avons choisie ici)

Note : cpan fonctionne normalement avec Perlbrew

Installation

Environnement

Par défaut Perlbrew s’installe dans $HOME/perl5, nous souhaitons l’installer dans /opt/perl5, il faut donc lui préciser un autre lieu :

 $ export PERLBREW_ROOT=/opt/perl5</pre>
$ cd /opt/perl5
$ curl -k -LO http://xrl.us/perlbrew
$ perl ./perlbrew install
$ rm ./perlbrew
$ /opt/perl5/bin/perlbrew init

Les commandes suivante vont modifier le PATH afin

 $ echo "export PERLBREW_ROOT=/opt/perl5" >> ~/.bashrc
$ echo "source /opt/perl5/etc/bashrc" | tee -a ~/.bashrc

Déconnectez-vous ou relancer la bash. Vous devriez avoir de nouvelles variables d’environnement :

 $ env | grep PATH
PATH=/opt/perl5/bin:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin:/opt/scala/cur/bin:/usr/local/mysql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/scala/cur/bin
PERLBREW_PATH=/opt/perl5/bin

Installation de perl

 $ perlbrew mirror
# Choisir par exemple : 78 : OVH
$ perlbrew -v install perl-5.14.2 -Dusethreads

Switch perl

Actuellement sur le système perl v5.8.8

 $ perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

On switch sur l’install de perl 5.14.2

$ perlbrew switch perl-5.14.2
$ perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux

Copyright 1987-2011, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Retour sur la version système :

 $ perlbrew off
perlbrew is turned off.
$ perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Perl & le CPAN

Installation de CPAN

 $ perlbrew switch perl-5.14.2
$ cpan
# Answer all setup instructions
» o conf commit
» q

Utilisation CPAN

 $ cpanm --interactive -v App::cpanoutdated

Source

  • http://www.perlbrew.pl/
  • http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html
  • http://nxadm.wordpress.com/2010/12/10/get-the-latest-perl-release-with-perlbrew/
  • http://www.perl.org/get.html
  • http://search.cpan.org/~gugod/App-perlbrew-0.39/bin/perlbrew#INSTALLATION