Linux:Serveur de mail avec CyrusImap Sieve Postfix Clamav Dspam
Un article de Djjnet.
Présentation de la solution :
- solution hébergement d'emails complète multidomaines avec login/email du type : utilisateur@domaine.com
- serveur Pop/Imap : CyrusImap
- serveur smtp avec possibilité d'envoi en dehors du réseau local par authentification : Postfix
- antivirus : Clamav
- antispam par apprentissage avec possibilité de quarantaine et préférences propre à chaque utilisateur : Dspam
- interface de gestion des comptes emails et alias avec administrateurs de domaines : Web-cyradm
- webmail : Squirrelmail
Cette documentation est basée sur les versions des logiciels dans Debian Etch.
Installation des packages
Partie MySQL :
apt-get install mysql-server-5.0
Partie Postfix :
apt-get install postfix postfix-mysql postfix-pcre
Choisir "Site Internet" comme configuration pour postfix, nous modifierons les fichiers de configuration ensuite.
Partie CyrusImap :
apt-get install libsasl2-modules cyrus-admin-2.2 cyrus-clients-2.2 cyrus-common-2.2 cyrus-doc-2.2 cyrus-imapd-2.2 cyrus-pop3d-2.2 sasl2-bin
Partie Dspam :
apt-get install dspam libdspam7-drv-mysql dspam-webfrontend libapache2-mod-auth-pam libpam-mysql
Partie Clamav :
apt-get install clamav clamsmtp clamav-freshclam
Partie WebCyradm et Webmails :
apt-get install apache2 php5 php5-mysql php-pear php-db gettext
Configuration de WebCyradm et de la base mail
- Télécharger la version 0.5.5 ici : http://www.web-cyradm.org/web-cyradm-svn-0.5.5.tar.gz
- Décompresser dans le dossier /var/www
- Créer la base mail et donner les droits à l'utilisateur mail.
- Editer le fichier scripts/create_mysql.sql et mettre un mot de passe à l'utilisateur admin
- pour accountuser, modifier cyrus en admin et mettre le même mot de passe.
- puis :
mysql -p mail < scripts/create_mysql.sql
- Effacer le fichier scripts/create_mysql.sql
- Dans le dossier config :
mv conf.php.dist conf.php
- Editer conf.php et indiquer les informations de connexion à CyrusImap (utilisateur admin et mot de passe défini au dessus) ainsi que les informations de connexion à MySQL
chown www-data:www-data conf.php chmod 640 conf.php
- Modifier conf.php :
$DOMAIN_AS_PREFIX = 1; $FQUN = 1;
- Dossier de logs :
mkdir /var/log/web-cyradm chown www-data /var/log/web-cyradm/
Fonction check_alias
Lancer sous mysql cette requête pour ajouter la fonction utilisée ensuite par postfix :
use mail
DELIMITER ;;
DROP FUNCTION IF EXISTS `check_alias`;;
CREATE FUNCTION `check_alias`(testaddress varchar(255)) RETURNS varchar(255) CHARSET latin1
DETERMINISTIC
BEGIN
DECLARE res varchar(255);
SET res= (SELECT alias FROM virtual WHERE alias = testaddress AND status = '1' limit 1);
IF res !=
THEN SET res = 'DUNNO';
RETURN res;
END IF;
SET res= (SELECT address FROM lists_mailman WHERE address = testaddress limit 1);
IF res !=
THEN SET res = 'DUNNO';
ELSE SET res = CONCAT('553 Mailbox \,testaddress,'\' not found');
END IF;
RETURN res;
END;;
DELIMITER ;
Configuration de Postfix
Les deux fichiers de configuration principaux sont : /etc/postfix/main.cf et /etc/postfix/master.cf.
Le fichier /etc/postfix/main.cf
Le fichier main.cf contient la configuration de postfix sur les emails acceptés/refusés mais aussi comment délivrer les emails.
Modification des temps par défaut pour suite à une erreur de délivraison d'un email, d'abord le temps avant message d'alerte à l'émetteur puis les temps avant suppression (1d correspond à 1 jour) :
delay_warning_time = 4h bounce_queue_lifetime = 10d maximal_queue_lifetime = 10d
Limiter la taille des messages reçu en octets (ici pour 25Mo) :
message_size_limit = 26214400
Définir le nom du serveur :
myhostname = mx.dj-j.net
Domaine des messages envoyés depuis le serveur, $myhostname dans notre exemple utilisateur@mx.dj-j.net (attention de ne pas mettre la même chose qu'un domaine virtuel) :
myorigin = $myhostname
Domains autorisés des messages destinés aux comptes locaux
mydestination = $myhostname, localhost
Définition des alias pour les comptes locaux, attention à ne pas faire de boucle et de bien définir une adresse réelle pour l'alias root !
alias_maps = hash:/etc/aliases hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases hash:/var/lib/mailman/data/aliases
Voir Linux:Listes_de_diffusion_avec_Mailman_et_Postfix pour la partie mailman.
Par défaut, postfix relaie les emails de la machine et des machines du sous-réseau de la machine. Ici, nous n'autorisons que la machine locale et notre réseau local, mynetworks et mynetworks_style sont équivalents. mynetworks utilise comme paramètre des références de réseaux séparés par des espaces ou des virgules et mynetworks_style de dénominations (host, subnet ou class).
Ainsi nous pouvons envoyer des emails grâce à notre serveur smtp.
mynetworks = 127.0.0.0/8,192.168.100.0/24 #mynetworks_style = host
Postfix peut relayer les emails de domaines que vous ne gérez pas par exemple lorsque vous gérez un serveur smtp secondaire. Ils sont à indiquer en paramètre de la variable relay_domains. Si ce n'est pas le cas, mettre cette variable sans valeur :
relay_domains =
Il est possible de demander à postfix de passer par un autre serveur smtp pour l'envoi des emails, par exemple celui de votre FAI (ex : smtp.free.fr). Si cette valeur est vide, l'envoi des messages est direct.
relayhost =
Permettre le smtp authentifié pour envoyer des emails depuis l'extérieur en passant par votre serveur smtp :
broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous
Définir comment délivrer les emails acceptés : Ne pas utiliser la méthode cyrus-deliver qui est déprécier. Cyrus et Postfix vont communiquer par un socket lmtp. Il faut indiquer pour le socket lmtp le chemin en relatif au dossier racine de postfix (/var/spool/postfix/ par défaut). En effet, lmtp est par défaut chrooté (lmtp unix - - - - - lmtp dans le fichier master.cf)
mailbox_transport = lmtp:unix:public/lmtp virtual_transport = $mailbox_transport
Interfaces réseau sur lesquelles postfix écoute pour recevoir les emails :
inet_interfaces = all
Domaines des emails acceptés sur le serveur :
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domain.cf
Fichier contenant les emails pour les domaines définis ci-dessus :
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual.cf hash:/var/lib/mailman/data/virtual-mailman
Voir Linux:Listes_de_diffusion_avec_Mailman_et_Postfix pour la partie mailman.
proxy: permet de cacher les connexions Mysql. C'est utile dès que le serveur commence à être pas mal utilisé.
Le reject est envoyé qu'après le RECT TO. Certains clients smtp ne prendrait sinon pas en compte de reject.
smtpd_delay_reject = yes
Il est possible de mettre warn_if_reject devant une restriction pour la tester, il y aura un message dans les logs.
Dans les fichiers de type check_..._access, utiliser les mots clefs :
- OK : accept le message : passe au prochain type de restrictions
- REJECT : rejeter le message
- DUNNO : passer à la restriction suivante
smtpd_client_restrictions = permit_mynetworks check_client_access hash:/etc/postfix/check_client_access reject_rbl_client cbl.abuseat.org # sbl-xbl.spamhaus.org n'est à utiliser que pour des usages non commerciaux reject_rbl_client sbl-xbl.spamhaus.org reject_unknown_client
Rejeter les clients qui ne s'identifient pas
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks check_helo_access hash:/etc/postfix/check_helo_access reject_non_fqdn_hostname reject_invalid_hostname reject_unknown_hostname
smtpd_sender_restrictions = permit_mynetworks check_sender_access hash:/etc/postfix/check_sender_access reject_non_fqdn_sender reject_unknown_sender_domain
La restriction suivante effectue une vérification sur le serveur mail de l'expéditeur. Cette option est efficace pour éliminer le spam par contre, il y a un risque de se faire blacklister à cause des demandes sur le serveur de mail de l'émetteur potentiel. J'ai choisi de ne plus l'utiliser.
# reject_unverified_sender
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_unlisted_recipient reject_non_fqdn_recipient #Comme nous utilisons virtual_mailbox_domains et virtual_alias_maps, postfix ne vérifie pas si la boîte email ou l'alias existe avant de l'envoyer à cyrus. Nous allons donc faire une requête MySQL pour vérifier cela et éviter des traitements inutiles. check_recipient_access mysql:/etc/postfix/mysql-check-virtual.cf #Appel à l'antispam dspam check_recipient_access pcre:/etc/postfix/dspam_filter_access
Le fichier /etc/postfix/master.cf
#Pour les connexions à clamav : clamav unix - - n - 16 smtp -o smtp_send_xforward_command=yes #Pour les connexions à dspam : dspam unix - - n - - lmtp
#Retour de clamav 127.0.0.1:10026 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8
#Retour de dspam 127.0.0.1:10028 inet n - n - 15 smtpd -o content_filter=clamav:127.0.0.1:10025 -o local_recipient_maps= -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
Créer le fichier /etc/postfix/sasl/smtpd.conf
Pour l'authentification SMTP AUTH :
pwcheck_method: saslauthd mech_list: plain login
Le fichier /etc/postfix/dspam_filter_access
Les expressions régulières sont validées dans l'ordre des règles. Une fois qu'une est validée, postfix arrête la vérification.
#les 2 boites à ne pas filtrer (celles où sont envoyé les emails pour l'apprentissage de dspam) /^(spam|notspam)@.*$/ OK #puis domaines à filtrer par dspam (une ligne par domaine) /^.*@dj-j.net$/ FILTER dspam:unix:/tmp/dspam.sock #puis domaines qui n'ont que la vérification antivirus, dans notre cas, tous les autres domaines : /^.*$/ FILTER clamav:127.0.0.1:10025
Utiliser la commande suivante pour mettre à jour les modifications :
postmap /etc/postfix/dspam_filter_access
Les fichiers de connexion à mysql
Contenu de /etc/postfix/mysql-domain.cf :
#User name and password to log into the mysql server hosts = 127.0.0.1 user = mail password = PASSWORD # the database name on the servers dbname = mail # the table name table = domain # select_field = domain_name where_field = domain_name
Contenu de /etc/postfix/mysql-virtual.cf :
# the user name and password to log into the mysql server hosts = 127.0.0.1 user = mail password = PASSWORD # the database name on the servers dbname = mail # the table name table = virtual # select_field = dest where_field = alias additional_conditions = and status = '1'
Contenu de /etc/postfix/mysql-check-virtual.cf :
hosts = 127.0.0.1
user = mail
password = PASSWORD
dbname = mail
query = SELECT check_alias('%s')
Droits sur les fichiers :
chown postfix:postfix /etc/postfix/mysql-* chmod 640 /etc/postfix/mysql-*
Configuration de SASLAUTHD
Il faut modifier le fichier /etc/default/saslauthd afin de démarrer le démond saslauthd, indiquer l'authentification par base sasl ainsi qu'un modification l'endroit où sont les fichiers mux pour communiquer avec Postfix :
START=yes MECHANISMS="pam" PARAMS="-r -m /var/spool/postfix/var/run/saslauthd" ou OPTIONS="-r -m /var/spool/postfix/var/run/saslauthd"
Le -r est nécessaire pour l'authentification avec des comptes utilisateurs virtuel avec @domaine.
/etc/init.d/saslauthd stop mkdir -p /var/spool/postfix/var/run/saslauthd adduser postfix sasl
Pour que cyrus puisse se connecter à saslauthd malgré la modification :
cd /var/run mv saslauthd saslauthd.back ln -s /var/spool/postfix/var/run/saslauthd saslauthd /etc/init.d/saslauthd start
Configuration de CyrusImap
Les deux fichiers de configuration principaux sont : /etc/imapd.conf et /etc/cyrus.conf.
Le fichier /etc/imapd.conf
Il faut autoriser un utilisateur à se connecter au serveur pour administrer les boîtes mails :
admins: admin
Dossiers :
Configuration :
configdirectory: /var/lib/cyrus
Boîtes emails :
defaultpartition: default partition-default: /var/spool/cyrus hashimapspool: true
Pour mettre des point dans les noms des comptes :
unixhierarchysep: yes
Pour des scripts sieve :
sendmail: /usr/sbin/sendmail sieveusehomedir: false sievedir: /var/spool/sieve
Temps minimum entre chaque consultation du serveur POP en minutes (0 aucun limite) :
popminpoll: 0
Définir le socket lmtp pour communiquer avec Postfix :
lmtpsocket: /var/spool/postfix/public/lmtp
Il faut définir la méthode d'authentification des utilisateurs, l'utilisation de saslauthd permet de ne pas associer de compte utilisateur local aux boîtes mails :
sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN allowplaintext: yes
Pour permettre l'utilisation des identifiants sous la forme utilisateur@domaine.com
virtdomains: userid
Pour utiliser une connexion cryptée (SSL) en utilisant le TLS qui permet de rester sur le port imap 143 :
tls_cert_file: /var/dj-j.net/ssl/cyrus/mx.crt tls_key_file: /var/dj-j.net/ssl/sangoku.key
Le fichier /etc/cyrus.conf
Il suffit dans ce fichier de modifier les lignes correspondantes dans la partie SERVICES :
imap cmd="imapd -U 30" listen="imap" prefork=5 maxchild=100 pop3 cmd="pop3d -U 30" listen="pop3" prefork=3 maxchild=50 lmtpunix cmd="lmtpd" listen="/var/spool/postfix/public/lmtp" prefork=2 maxchild=20
En cas de besoin d'authentifier à la fois depuis les comptes en base MySQL et en base sasldb
Modifier le fichier /etc/imapd.conf avec :
sasl_pwcheck_method: saslauthd auxprop sasl_auxprop_plugin: sasldb
Ajouter un utilisateur avec :
saslpasswd2 -c user
Lister les utilisateurs avec :
sasldblistusers2
Supprimer un utilisateur :
saslpasswd2 -d user
Configuration de dspam
Base MySQL
Créer une base MySQL nommé dspam avec des accès complets pour l'utilisateur dspam
Puis lancer les commandes suivantes :
mysql -u dspam -p dspam < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sql mysql -u dspam -p dspam < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sql
Modifier /etc/mysql/my.cnf :
max_allowed_packet doit être >= 8M
Vérifier que dans le fichier /etc/cron.daily/libdspam7-drv-mysql il y a :
PURGE=/usr/share/doc/libdspam7-drv-mysql/purge-4.1.sql
Important :
Dans la table dspam_virtual_uids ajouter tout de suite un utilisateur avec dans le champs username la valeur root car l'utisateur utilisé avec la commande dspam doit être un utilisateur valide :
insert into dspam_virtual_uids (username) values ('root');
Fichier /etc/dspam/dspam.d/mysql.conf
MySQLServer /var/run/mysqld/mysqld.sock MySQLUser dspam MySQLPass PASS MySQLDb dspam MySQLUIDInSignature on
chmod 640 /etc/dspam/dspam.d/mysql.conf chown dspam:root /etc/dspam/dspam.d/mysql.conf
Créer les alias d'apprentissage de dspam
Dans le fichier /etc/aliases :
spam: "|/usr/bin/dspam --user root --class=spam --source=error" notspam: "|/usr/bin/dspam --user root --class=innocent --source=error"
Mettre à jour avec la commande :
postalias /etc/aliases
Ajouter aussi dans MySQL ou par l'intermediaire de WebCyradm les alias :
spam@dj-j.net vers spam@localhost notspam@dj-j.net vers spam@localhost
Configuration de dspam
Fichier /etc/default/dspam
# Do not start dspam. START=yes # User that runs dspam. USER=dspam
Fichier /etc/dspam/dspam.conf
Modifier les paramètres suivants, les autres dans le fichier sont à laisser par défaut :
StorageDriver /usr/lib/dspam/libmysql_drv.so DeliveryHost 127.0.0.1 DeliveryPort 10028 DeliveryIdent localhost DeliveryProto SMTP #Trust postfix n'est pas necessaire car postfix communique avec dspam par lmtp #Trust nobody est nécessaire car /etc/aliases appartient à root, la commande sera alors exécuté en tant que nobody. Trust nobody #Pour le control center : Trust www-data #Le tag rajouter au sujet de l'email considéré comme spam : Preference "spamSubject=[SPAM]" ParseToHeaders on ChangeModeOnParse on ChangeUserOnParse on Opt out ServerQueueSize 32 ServerPID /var/run/dspam/dspam.pid ServerMode standard ServerParameters "--deliver=innocent" ServerIdent "localhost.localdomain" ServerDomainSocketPath "/tmp/dspam.sock"
Les préférences par défaut sont à mettre en base de données et donc il faut utiliser la commande dspam-admin :
- Training Mode: TEFT, TOE, TUM, NOTRAIN
dspam_admin ch pref default trainingMode TEFT
- Spam Action: quarantine, tag
dspam_admin ch pref default spamAction tag
- Sujet en cas de tag :
dspam_admin ch pref default spamSubject "[SPAM]"
- Bayesian Noise Reduction: on/off
dspam_admin ch pref default enableBNR on
- Automatic Whitelisting: on/off
dspam_admin ch pref default enableWhitelist on
- Statistical Sedation: 0-10
dspam_admin ch pref default statisticalSedation 5
- Signature Location: message, headers, attachment
dspam_admin ch pref default signatureLocation message
- Whitelist Threshold: the minimum number of innocent hits from a recipient to
- be automatically whitelisted. Do not set this value too low!
dspam_admin ch pref default whitelistThreshold 10
- showFactors: when set to on, the determining factors for each message will
- be added to a X-DSPAM-Factors message header.
dspam_admin ch pref default showFactors on
- pour voir le début du message dans l'historique de l'interface Web
dspam_admin ch pref default storeFragments on
Modifier que les droits sur les fichiers de configuration pour être sûr qu'ils sont corrects :
chown -R dspam.dspam /etc/dspam
Configuration de l'interface graphique de dspam
Le fichier /etc/dspam/webfrontend.conf , modifier les paramètres suivants :
Mettre la valeur indiquée pour myhostname dans /etc/postfix/main.cf
$CONFIG{'LOCAL_DOMAIN'} = "mx.dj-j.net";
$CONFIG{'PREFERENCES_EXTENSION'} = 1;
Configuration d'Apache2 pour l'interface graphique de dspam
a2enmod suexec
Ajouter à votre virtualhost :
SuexecUserGroup dspam dspam
Addhandler cgi-script .cgi
Options +ExecCGI -Indexes
Alias /dspam /var/www/dspam/
<Directory /var/www/dspam/>
Addhandler cgi-script .cgi
Options +ExecCGI -Indexes
DirectoryIndex dspam.cgi
AuthPAM_Enabled on
AuthType Basic
AllowOverride All
AuthPAM_FallThrough off
AuthBasicAuthoritative off
AuthName "DSPAM Control Center"
Require valid-user
</Directory>
Suppression des emails trop anciens dans les quarantaines
Installer mail-expire :
apt-get install mail-expire
Puis créer le script suivant : /etc/cron.daily/cleanquarantine
#!/bin/bash
DAYS=15
DATA=/var/spool/dspam/data
for mbox in `find ${DATA} -name *mbox`
do
if [ -s $mbox ]; then
mail-expire --delete ${DAYS} $mbox > /dev/null
chown dspam.dspam $mbox
chmod 660 $mbox
fi;
done
/!\ Nous avons eu de problème avec mail-expire qui utilisait toutes les ressources CPU et plantait sur des boîtes trop importantes et utilisons maintenant archivemail :
apt-get install archivemail
#!/bin/bash
DAYS=15
DATA=/var/spool/dspam/data
for mbox in `find ${DATA} -name *mbox`
do
if [ -s $mbox ]; then
rm -f $mbox.new
nice archivemail -q --delete -d ${DAYS} $mbox
chown dspam.dspam $mbox
chmod 660 $mbox
fi;
done
Configuration de logrotate
Editer le fichier /etc/logrotate.d/dspam pour ajouter :
/var/log/dspam/dspam.messages {
daily
missingok
rotate 30
compress
}
Cela est très important car la taille de ce fichier augmente petit à petit et fini par atteindre la taille de 2Go et fait alors planter dspam sans aucun logs spécial permettant de trouver le problème.
Optimisation des tables dspam
On peut améliorer les performances de la base en passant en InnoDB
mysql -u root -p USE dspam; ALTER TABLE dspam_preferences TYPE=InnoDB; ALTER TABLE dspam_signature_data TYPE=InnoDB; ALTER TABLE dspam_stats TYPE=InnoDB; ALTER TABLE dspam_token_data TYPE=InnoDB; ANALYZE TABLE dspam_preferences; ANALYZE TABLE dspam_signature_data; ANALYZE TABLE dspam_stats; ANALYZE TABLE dspam_token_data;
Dans le fichier de maintenance de dspam : /usr/share/doc/libdspam7-drv-mysql/purge-4.1.sql, ajouter à la fin :
START TRANSACTION; optimize table dspam_signature_data, dspam_token_data; COMMIT;
Configuration de PAM
Dans le dossier /etc/pam.d/ modifier les fichiers suivant :
smtp sieve pop imap apache2
Leur contenu est le même pour tous :
auth sufficient pam_mysql.so user=mail passwd=PASS host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time auth sufficient pam_unix_auth.so account required pam_mysql.so user=mail passwd=PASS host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time account sufficient pam_unix_acct.so
Configuration de ClamAV
Configuration de Clamsmtp
Fichier /etc/clamsmtpd.conf
OutAddress: 127.0.0.1:10026 Listen: 10025 Header: X-AV-Checked: ClamAV using ClamSMTP User: clamsmtp
Configuration de ClamAV
Installation de Squirrelmail
La base
cd /var/www
Télécharger la dernière version stable ainsi que les traductions :
wget //switch.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.13.tar.bz2 wget http://garr.dl.sourceforge.net/sourceforge/squirrelmail/all_locales-1.4.13-20071220.tar.bz2
tar -xjf squirrelmail-1.4.13.tar.bz2 mv squirrelmail-1.4.13 squirrelmail cd squirrelmail
Pour les pièces jointes et les préférences utilisateurs :
mkdir attach data chown www-data:www-data attach chown www-data:www-data data
Configuration
- lancer ./configure
- Menu 1 : Indiquer les informations principales d'affichage
- Menu 2, A, 8 : mettre cyrus
- Menu 4 : 1 et 2 pour adapter les dossiers (/var/www/squirrelmail/data et /var/www/squirrelmail/attach)
- Menu 10 : 1 mettre fr_FR
Editer le fichier config/config.php et modifier comme ci-dessous :
$optional_delimiter = '/'; $trash_folder = 'INBOX/Trash'; $sent_folder = 'INBOX/Sent'; $draft_folder = 'INBOX/Drafts';
Plugins
Modification de mot de passe des utilisateurs depuis squirrelmail
Télécharger la version de développement et recopier le dossier plugins/change_password pour le mettre dans le dossier plugins de l'installation en cours.
Editer le fichier config.php du dossier plugins/change_password et indiquer :
$cpw_backend = 'mysql';
Editer le fichier backend/mysql.php du même dossier et modifier :
// Initialize defaults $mysql_server = 'localhost'; $mysql_database = 'mail'; $mysql_table = 'accountuser'; // The names of the user ID and password columns $mysql_userid_field = 'username'; $mysql_password_field ='password'; // The user to log into MySQL with (must have rights) $mysql_manager_id = 'mail'; $mysql_manager_pw = 'PASSWORD'; // saslcrypt checked first - if it is 1, UNIX crypt is not used. $mysql_saslcrypt = 0; // use MySQL password() function $mysql_unixcrypt = 1; // use UNIX crypt() function
vlogin : paramètre spéciaux en fonction du domaine d'accès
cd plugins wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fvlogin-3.9.2-1.2.7.tar.gz tar -zxf vlogin...tar.gz cd /var/www/squirrelmail ./configure
- menu plugins (8) ajouter le plugin vlogin puis sauvegarder
- ajouter un fichier par domaine personalisé en utilisant le fichier d'exemple, par exemple :
cp plugins/vlogin/data/domains/domain.com.vlogin.config.php plugins/vlogin/data/domains/dj-j.net.vlogin.config.php
Personnaliser l'image d'accueil et le texte en modifiant par exemple ainsi :
$virtualDomains = array(
'dj-j.net' => array(
'org_name' => 'Dj-j.net',
'org_logo' => '../images/logo-dj-j.net-150-56.png',
),
);
Composition de mail en HTML
- Télécharger le plugin http://www.squirrelmail.org/plugin_view.php?id=209
- l'activer avec la commande ./configure menu 8
Filtres Sieve
Ajouter le plugin Sieve Mail Filters : http://www.squirrelmail.org/plugin_view.php?id=73
Pour le configurer il suffit de copier le fichier plugins/avelsieve/config/config_sample.php vers plugins/avelsieve/config/config.php.
Les options par défaut sont suffisantes.
En cas de problèmes
Problème de communication entre Cyrus et Sasl
Dans auth.log :
perl: No worthy mechs found
Dans syslog :
SASL(-1): generic failure: checkpass failed
- Vérifier si cyrus peut accéder à /var/spool/postfix/var/run/saslauthd/mux, cyrus dans le group sasl et le lien /var/run/saslauthd vers /var/spool/postfix/var/run/saslauthd bien existant.
- Ajouter au démarrage de saslauthd la création du lien symbolique :
ln -sf /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
Plantage de clamav
Dans les logs de clamav :
Tue Apr 8 07:30:15 2008 -> ERROR: reload db failed: Unable to lock database directory (try 3) Tue Apr 8 07:30:15 2008 -> ERROR: reload db failed: Unable to lock database directory Tue Apr 8 07:30:15 2008 -> Terminating because of a fatal error.Tue Apr 8 07:30:15 2008 -> Socket file removed. Tue Apr 8 07:30:15 2008 -> Pid file removed. Tue Apr 8 07:30:15 2008 -> --- Stopped at Tue Apr 8 07:30:15 2008
Ce problème vient de la version de Debian Etch de clamav, il faut la mettre à jour avec la version du dépot volatile.
- Edider /etc/apt/sources.list et ajouter :
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Mettre à jour la liste des packages et installer la nouvelle version de clamav.


