Mise en place d'un serveur de mail complet linux server wiki

  • Published on
    23-May-2015

  • View
    901

  • Download
    0

Transcript

1. De Linux Server Wiki.Ce tutoriel va vous expliquer comment mettre en place un serveur mail complet pour plusieurs domaines et supportant lipv6 sous debian lenny. Les lments suivants serontutiliss :un serveur smtp : postfixun mail delivery agent (mda) : maildropun serveur pop/imap : courierun scanneur de contenu : amavisun antispam : spamassassinun antivirus : ClamAVun gestionnaire de mailing list : mailmandes webmails : Squirrelmail et roundcubeAfin de grer facilement les domaines, certains services seront coupls avec MySQL. Pour ceux qui veulent bnficier du filtrage pour les boites imaps, je vous montrerais aussicomment coupler postfix avec maildrop. En dernier lieu, nous verront rapidement comment configurer un serveur mx secondaire pour vos domaines.Nous allons mettre en place un service email pour deux domaines : core.csnu.org et csnu.org core.csnu.org reprsente le serveur en lui-mme, et permet de dlivrer les mails auxutilisateurs locaux du serveur. csnu.org est ce quon appel un domaine virtuel. Nous grerons les mails de ce domaine via MySQL.Au niveau dns, core.csnu.org est le domaine identifiant la machine. Il possde ladresse ipv4 213.186.47.110 et ladresse ipv6 2001:41d0:1:d6e::110. csnu.org est un alias pourcore.csnu.org.Les changements de permissions effectus dans ce howto supposent que vous tes en umask 00271 Champs dns MX2 Postfix2.1 Configuration de postfix pour le support MySQL des domaines virtuels2.2 Configuration du smtp-auth2.3 Ajout du support SSL/TLS.2.4 Ajout dun utilisateur virtuel et lancement des services.2.5 Commandes utiles2.6 Support du quota.Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet1 sur 37 05/07/2012 12:19 2. 2.7 Problmes possibles.3 Courier3.1 Ajout du support SSL/TLS3.1.1 utiliser les scripts de courier3.1.2 Crer son propre certificat sign par son autorit de certification.3.2 Lancement4 maildrop4.1 maildroprc4.2 Quota4.3 Intgration postfix4.4 Vrification et redmarrage5 amavis5.1 Taguer les mails contenant un virus6 spamassassin6.1 Mise en place de spamassassin6.2 Le problme de la cohabitation entre Sender Policy Framework (SPF) et lenvoi de mails6.3 Sender Policy Framework (SPF) et ipv67 clamav8 Mailman9 Des scripts de gestion de la base de donne MySQL10 Installation de webmails10.1 Squirrelmail10.2 Ajout du support des langues10.3 Plugins utiles10.3.1 Ajout de votre favicon personnalis10.4 RoundCube10.5 wapreader11 Mise en place dun MX secondairePour que les mails a destination de vos deux domaines arrivent bien sur votre serveur, il faut configurer des champs dns MX. Pour cela, ditez la zone dns de votre domaine(/srv/bind/csnu.org.hosts dans mon cas) et ajoutez/modifiez les lignes suivantes:core.csnu.org. IN MX 1 core.csnu.org.csnu.org. IN MX 1 core.csnu.org.core.csnu.org. IN A 213.186.47.110core.csnu.org. IN AAAA 2001:41d0:1:d6e::110Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet2 sur 37 05/07/2012 12:19 3. list.csnu.org. IN CNAME core.csnu.org.Si vous navez pas dadresse ipv6 configur sur votre serveur, vous naurez pas besoin du champ AAAA.Vous pouvez aussi configurer un champ spf. Le spf (Sender Policy Framework) est une mesure antispam permettant aux autres serveurs de savoir quels serveurs ont le droitdenvoyer des mails pour votre domaine. Voici mes champs dns spf :core.csnu.org. IN TXT "v=spf1 mx -all"csnu.org. IN TXT "v=spf1 mx ~all"mx signifie que seules les serveurs mx ont le droit denvoyer des mails pour le domaine en question.~all signifie que toutes les autres ips nont probablement pas le droit denvoyer de mails.-all signifie que toutes les autres ips nont pas le droit denvoyer de mails.Commenons par installer les diffrents composants de postfix ainsi que sasl qui nous permettra de grer le smtp-auth histoire de ne pas laisser notre serveur en open-relay etservir de relai pour le spam.aptitude install postfix postfix-mysql libsasl2-2 libsasl2-modules sasl2-bin libpam-mysql procmailDebian vous laissera choisir entre plusieurs configurations pour postfix. Choisissez pas de configuration.Stoppez les services inutiles pour le moment :/etc/init.d/postfix stop/etc/init.d/saslauthd stopLe fichier de configuration principal de postfix est /etc/postfix/main.cf. Ouvrez le avec votre diteur de texte et modifiez les lignes suivantes:smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)biff = nodisable_vrfy_command = yessmtpd_helo_required = yes#strict_rfc821_envelopes = yesmydomain = core.csnu.org# ajoute .$mydomain si quelquun envoi un mail sans prciser le domaine (utile en local quand vous utilisez la fonction mail)append_dot_mydomain = yes# Uncomment the next line to generate "delayed mail" warnings#delay_warning_time = 4hmyhostname = core.csnu.orgMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet3 sur 37 05/07/2012 12:19 4. alias_maps = proxy:hash:/etc/aliasesalias_database = hash:/etc/aliasesmyorigin = /etc/mailnamemydestination = core.csnu.org, localhost.localdomain, localhostrelayhost =mynetworks = 127.0.0.0/8, [::1]/128, 213.186.47.110, [2001:41d0:1:d6e::110]mailbox_command = procmail -a "$EXTENSION"mailbox_size_limit = 0recipient_delimiter = +message_size_limit = 10240000inet_interfaces = 127.0.0.1, [::1], 213.186.47.110, [2001:41d0:1:d6e::110]inet_protocols = ipv4, ipv6#ips binder pour envoyer des mails via smtp#smtp_bind_address=213.186.47.110#smtp_bind_address6=2001:41d0:1:d6e::110Nous venons de dfinir la directive myorigin de postfix comme tant le fichier /etc/mailname. Cette directive dfini de qui provient les mails envoys par les utilisateurslocaux. Dans notre cas, les mails doivent provenir du domaine de notre machine, savoir, core.csnu.org. Tapez donc :echo "core.csnu.org" > /etc/mailnamechmod o+r /etc/mailnameUne autre directive importante que nous avons dfini est mydestination. Cette directive dfini quels domaines postfix doit considrer comme locaux. Lorsque postfix reoit unmail pour lun de ces domaines, il les dlivre dans la boite locale correspondante. Techniquement, postfix est maintenant dj prs recevoir des mails destins @core.csnu.org.Il reste donc configurer le domaine virtuel et ne pas relayer les spams.Pensez crer la base de donne des alias :postalias /etc/aliasesDernire chose faire : vous assurer que le fichier /etc/postfix/main.cf est lisible par tous le monde :chmod o+r /etc/postfix/main.cfCrez une base de donn nomme postfix:mysqladmin -u root --password=motdepasse create postfixmotdepasse correspond au mot-de-passe MySQL de lutilisateur rootEnsuite, crez lutilisateur postfix ayant pour mot-de-passe password et attribuez lui les droits sur la base de donn postfix :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet4 sur 37 05/07/2012 12:19 5. $ mysql -u root -pEnter password:GRANT ALL PRIVILEGES ON postfix.* TO "postfix"@"localhost" IDENTIFIED BY password;quit;Puis crez les tables dans la base de donn postfix :# mysql -u root -pEnter password:USE postfix;CREATE TABLE `alias` (`address` varchar(255) NOT NULL default ,`goto` text NOT NULL,`domain` varchar(255) NOT NULL default ,`created` datetime NOT NULL default 0000-00-00 00:00:00,`modified` datetime NOT NULL default 0000-00-00 00:00:00,`active` tinyint(1) NOT NULL default 1,PRIMARY KEY (address)) TYPE=MyISAM COMMENT=Postfix Admin - Virtual Aliases;USE postfix;CREATE TABLE `domain` (`domain` varchar(255) NOT NULL default ,`description` varchar(255) NOT NULL default ,`aliases` int(10) NOT NULL default 0,`mailboxes` int(10) NOT NULL default 0,`maxquota` int(10) NOT NULL default 0,`transport` varchar(255) default NULL,`backupmx` tinyint(1) NOT NULL default 0,`created` datetime NOT NULL default 0000-00-00 00:00:00,`modified` datetime NOT NULL default 0000-00-00 00:00:00,`active` tinyint(1) NOT NULL default 1,PRIMARY KEY (domain)) TYPE=MyISAM COMMENT=Postfix Admin - Virtual Domains;USE postfix;CREATE TABLE `mailbox` (`username` varchar(255) NOT NULL default ,`password` varchar(255) NOT NULL default ,`name` varchar(255) NOT NULL default ,`maildir` varchar(255) NOT NULL default ,`quota` int(10) NOT NULL default 0,`domain` varchar(255) NOT NULL default ,`created` datetime NOT NULL default 0000-00-00 00:00:00,`modified` datetime NOT NULL default 0000-00-00 00:00:00,`active` tinyint(1) NOT NULL default 1,PRIMARY KEY (`username`)) TYPE=MyISAM COMMENT=Postfix Admin - Virtual Mailboxes;quit;Nous avons donc cr 3 tables :alias qui contiendra les alias, cest--dire, les redirections de mails.domain qui contiendra les domaines virtuels grs par postfix.mailbox qui contiendra les boites mails virtuels.Maintenant, nous allons crer lutilisateur vmail et son groupe vmail. Cest cet utilisateur qui centralisera les boites mails virtuels. Dans ce exemple, le rpertoire personnel de cetMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet5 sur 37 05/07/2012 12:19 6. utilisateur est /srv/vmail. Cest dans ce rpertoire que les comptes mails seront stocks.groupadd -g 5000 vmailuseradd -g vmail -u 5000 vmail -d /srv/vmail -mditez encore une fois le fichier /etc/postfix/main.cf et ajoutez y les lignes suivantes :#mysqlvirtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_gid_maps = static:5000virtual_mailbox_base = /srv/vmailvirtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_limit = 51200000virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_minimum_uid = 5000virtual_transport = virtualvirtual_uid_maps = static:5000# Support du quota (il nest pas compil sur le postfix de debian).virtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cfvirtual_mailbox_limit_override = yesvirtual_maildir_limit_message = The user you are trying to reach is over quota. Please, try again later.virtual_overquota_bounce = yes#Pour les domaines relayer:#relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cfPetite explication pour, par exemple, la ligne virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf :mysql: spcifie que le fichier qui suit est la configuration pour accder la base MySQL des alias virtuels.proxy: spcifie quil faudra lire le fichier en utilisant le mcanisme proxy de postfix. En effet, par dfaut, pour des raisons de scurit, postfix est chroot et ne pourra doncpas avoir accs aux fichiers de configurations MySQL une fois lanc. Pour palier ce problme, postfix inclut un dmon "proxy" qui ne sera pas chroot et qui pourra donclire les fichiers ncessaires.Plus gnralement :virtual_alias_maps dfini les alias virtuelsvirtual_mailbox_base dfini le rpertoire o seront stocks les boites mails. Cest typiquement le homedir de lutilisateur dfini par virtual_uid_maps.virtual_mailbox_domains dfini les domaines pour lesquels postfix sera la destination finale. Lagent utilis pour dlivrer les mails sera celui de virtual_transport.virtual_mailbox_maps dfini les utilisateurs virtuels.virtual_transport dfini avec quel logiciel postfix doit dlivrer les mails. Par dfaut, cest le dmon virtual inclut avec postfix qui sen chargeIl va maintenant falloir crer les diffrents fichiers de configuration pour MySQL.Crez le fichier /etc/postfix/mysql_virtual_alias_maps.cf contenant:user = postfixMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet6 sur 37 05/07/2012 12:19 7. password = passwordhosts = localhostdbname = postfixquery = SELECT goto FROM alias WHERE address=%s AND active = 1Crez le fichier /etc/postfix/mysql_virtual_domains_maps.cf contenant:user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain=%s and backupmx = 0 and active = 1Crez le fichier /etc/postfix/mysql_virtual_mailbox_maps.cf contenant:user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT maildir FROM mailbox WHERE username=%s AND active = 1Crez le fichier /etc/postfix/mysql_virtual_mailbox_limit_maps.cf contenant:user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT quota FROM mailbox WHERE username=%sCrez le fichier /etc/postfix/mysql_relay_domains_maps.cf contenant:user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain=%s and backupmx = 1 and active = 1Soyez trs attentif la ligne hosts de chacun de ces fichiers. Comme je lai dj dit, tant donn que postfix est chroot, on passe par le proxy postfix qui permet postfix de seservir directement du fichier socket de MySQL pour accder aux bases. Dans ce cas, il faut laisser hosts = localhost. Une autre mthode serait de ne pas utiliser le systmeproxy, mais dentrer 127.0.0.1 en tant quhost. Dans ce cas, il faudra veiller ce que mysql nait pas loption skip-networking dactive.Dernire chose faire ici : il faut utiliser postmap sur chacun des fichiers afin de les transformer en table que postfix affectionne :cd /etc/postfixMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet7 sur 37 05/07/2012 12:19 8. postmap mysql_virtual_alias_maps.cfpostmap mysql_virtual_domains_maps.cfpostmap mysql_virtual_mailbox_maps.cfpostmap mysql_virtual_mailbox_limit_maps.cfpostmap mysql_relay_domains_maps.cfCette opration est recommencer aprs chaque modification de lun de ces fichiers.Pour finir, modifiez les permissions tant donn que les mot-de-passes mysql sont stocks en clair. Veilliez bien conserver le fichier main.cf accessible tous le monde tantdonn que sendmail a besoin dy accder pour envoyer des mails.chown root:postfix /etc/postfix/*chmod 640 /etc/postfix/*chmod o+r /etc/postfix/main.cfchmod +x /etc/postfix/postfix-scriptNous allons maintenant configurer le support SASL afin de ne pas laisser notre serveur en open-relay et servir ainsi comme relai pour les spams. Ajoutez les lignes suivantes dansle fichier /etc/postfix/main.cf :# Support SASLbroken_sasl_auth_clients = yessmtpd_sender_restrictions =reject_unknown_sender_domain,reject_non_fqdn_sendersmtpd_recipient_restrictions =permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unauth_destination,reject_unauth_pipelining,reject_invalid_hostname# reject_rbl_client dnsbl.dronebl.org,# reject_rbl_client list.dsbl.org,# reject_rbl_client bl.spamcop.net,# reject_rbl_client sbl-xbl.spamhaus.orgsmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymousCrez le fichier /etc/postfix/sasl/smtpd.conf et ajoutez y les lignes suivantes:pwcheck_method: saslauthdmech_list: plain loginallow_plaintext: trueMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet8 sur 37 05/07/2012 12:19 9. Comme prcdemment, veillez bien utiliser localhost comme hostname afin dutiliser le socket mysql si le skip-networking est activ sur votre serveur MySQL. Notez quil estimpossible dutiliser les mthodes dauthentification CRAM-MD5 et DIGEST-MD5 si les mot-de-passes sont crypts dans la base mysql (ce qui est le cas ici). Nous nouscontenterons donc de plain.ditez le fichier /etc/default/saslauthd de faon ce quil ait la configuration suivante:START=yesMECHANISMS="pam"OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"Il faut encore cr le dossier qui contiendra le socket de sasl:mkdir -p /var/spool/postfix/var/run/saslauthdCrez le fichier /etc/pam.d/smtp (il faudra peut-tre le nommer smtpd) et ajoutez y les lignes suivantes:auth required pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1account sufficient pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1Une fois de plus, soyez attentif largument host= A titre dinformation, voici les diffrentes options possibles pour largument crypt= :0 (ou "plain") = Pas de cryptage. Ceci nest pas recommand.1 (ou "Y") = utilise la fonction crypt() de linux. Cel correspond la fonction ENCRYPT() de MySQL. Cest la solution que nous avons choisi ici. Attention cependant,seul les huits premiers caractres du mot-de-passe seront pris en compte.2 (ou "mysql") = Utilise la fonction MySQL PASSWORD().3 (or "md5") = Utilise la fonction MySQL MD5().Il ne reste plus qu ajouter lutilisateur postfix au groupe sasl :adduser postfix saslUn petit point propos des permissions :/var/spool/postfix/, /var/spool/postfix/var/ et /var/spool/postfix/var/run/ doivent tre o+x/var/spool/postfix/var/run/saslauthd doit appartenir root:saslComme pour tous les serveurs, il est interessant de mettre en place un cryptage SSL/TLS afin de scuriser les transactions. En admettant que vous avez suivi mon guideMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet9 sur 37 05/07/2012 12:19 10. concernant la mise en place dune autorit de certification, voici ce quil reste faire.Commencez par ajouter les lignes suivantes dans votre fichier /etc/ssl/openssl.cnf :[POSTFIX]nsComment = "SMTP Server Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer:alwaysissuerAltName = issuer:copybasicConstraints = critical,CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEnciphermentnsCertType = serverextendedKeyUsage = serverAuthPuis crs le certificat et signs le avec votre autorit :openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.reqopenssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POSTFIX -in postfix.req -out postfix.pemSi jamais vous possdez dj vos cls mais quelles sont chiffrs par une passphrase, voici comment supprimer la passphrase :openssl rsa -in key.pem -textopenssl rsa -in key.pem -out key_unlocked.pemmv key.pem key_locked.pemmv key_unlocked.pem key.pemPostfix ne permet pas dutiliser des cls vrouills par une passphrase, veillez donc bien spcifier loption -nodes de la premire ligne. Personnellement, je stock les fichiers ducertificat dans /etc/postfix/ssl/:mkdir /etc/postfix/sslmv smtpd.key /etc/postfix/ssl/mv smtpd.pem /etc/postfix/ssl/chmod 600 /etc/postfix/ssl/*Crez le fichier contenant la chaine de certification :cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/core_ca/core_ca.pem > /etc/postfix/ssl/ca_chain.pemIl faut encore modifier /etc/postfix/main.cf :smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.pemsmtpd_tls_key_file=/etc/postfix/ssl/smtpd.keysmtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pemMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet10 sur 37 05/07/2012 12:19 11. smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pemsmtpd_tls_security_level=maysmtp_tls_security_level=maysmtpd_tls_loglevel = 1smtp_tls_loglevel = 1smtpd_tls_received_header = yessmtpd_tls_session_cache_timeout = 3600smtp_tls_session_cache_timeout = 3600Note : Les directives smtp_tls_cert_file et smtp_tls_key_file sont quant--elle destin lauthentification de votre client smtp (le certificat prcis ces directives doitpasser le test openssl verify -purpose sslclient. Le certificat que nous avons gnr est un certificat server uniquement.Dsormais, vous pourrez configurer votre logiciel de messagerie afin dutiliser le chiffrement TLS. Si vous souhaitez permettre les connexions SSL, il faut dcommenter lesquatres lignes suivantes du fichier /etc/postfix/master.cf :#smtps inet n - - - - smtpd# -o smtpd_tls_wrappermode=yes# -o smtpd_sasl_auth_enable=yes# -o smtpd_client_restrictions=permit_sasl_authenticated,rejectNotez quici, nous ne forons ni lutilisation du tls sur le serveur smtp, ni la vrification tls en mode client smtp. Cela signifie que le serveur annoncera supporter le TLS, mais neforcera pas son utilisation ; de mme pour le client.Pour votre rseau interne, vous pouvez forcez la vrification TLS du le client grce smtp_tls_policy_maps. Par exemple voici la ligne ajouter dans main.cf:smtp_tls_policy_maps = hash:/etc/postfix/tls_policyEt le fichier /etc/postfix/tls_policy :csnu.org verifyNoubliez pas de formater ce fichier pour postfix et de le rendre accessible en lecture :postmap /etc/postfix/tls_policychgrp postfix /etc/postfix/tls_policy*Pour des informations complmentaires, rendez-vous ici (http://www.postfix.org/TLS_README.html) .Pour ajouter un utilisateur test@csnu.org ainsi quun alias alias@csnu.org renvoyant vers notre utilisateur:Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet11 sur 37 05/07/2012 12:19 12. # mysql -u root -pEnter password:use postfix;INSERT INTO domain (domain,description) VALUES (csnu.org,Test Domain);INSERT INTO alias (address,goto) VALUES (alias@csnu.org, test@csnu.org);INSERT INTO mailbox (username,password,name,maildir) VALUES (test@csnu.org,ENCRYPT(userpassword),Mailbox User,test@csnu.org/);Les mots-de-passe sont crypts avec la fonction ENCRYPT() de MySQL. Comme je lai dit prcdemment, cette fonction limite la taille des passwords huit caractres. Si voussouhaitez utiliser des passwords de plus de huit caractres vous pouvez utiliser lune des autres fonctions de cryptage de Mysql (http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html) . Pensez cependant ajuster la configuration du fichier /etc/pam.d/smtp comme dcrit ici.Vous pouvez maintenant lancer vos services :/etc/init.d/saslauthd start/etc/init.d/postfix startPour tester si lauthentification fonctionne bien :testsaslauthd -u test@csnu.org -p userpassword -s smtp -f /var/spool/postfix/var/run/saslauthd/muxVous pouvez vrifier que postfix ne dtecte aucun problme avec :postfix checkLa queue de postfix peut tre gr en ligne de commande avec la commande postqueue. Pour afficher la queue, tapez :postqueue -pPour forcer postfix traiter sa queue, tapez :postqueue -fvous aurez peut-tre la ncessit de supprimer un message de la queue. Pour cel, il faut utiliser la commande postsuper :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet12 sur 37 05/07/2012 12:19 13. postsuper -d IDLID correspond au Queue ID renvoy par la commande postqueue -pLa commande postalias permet de gnrer les fichiers dalias de postfix :postalias /etc/aliasesLa commande postconf permet de manipuler la configuration en ligne de commandeLa commande postcat permet de lire un mail en queue. Par exemple, pour rcuprer sous forme lisible le mail en queue situ dans /var/spool/postfix/deferred/B/B9C791il suffit dutiliser :postcat /var/spool/postfix/deferred/B/B9C791Il est aussi possible de passer directement via le Queue ID du mail :postcat -q B9C791Vous laurez peut-tre remarqu : postfix ne supporte pas le quota par dfaut. Le patch VDA (http://vda.sourceforge.net/) permet dactiver le support du quota pour le MDAvirtual de postfix. Vous pouvez trouver une version postfix-vda pour debian sur http://debian.home-dn.net/ si vous souhaitez continuer dutiliser le dmon virtual fournit avecpostfix pour dlivrer les mails de vos domaines virtuels. Une autre mthode consiste utiliser un autre MDA pour transporter les mails, par exemple, maildrop.Si vous utilisez un noyau avec le patch grsecurity, jai remarqu un comportement trange. En effet, lorsque jessayais denvoyer un mail avec sendmail avec un autreutilisateur que root (www-data par exemple) il me renvoyait une erreur. Cest un problme de droit : /proc/net ntait pas lisible et excutable par tous le monde (o+rx) ce quiempchait sendmail denvoyer les mails.Nous allons maintenant installer courier pour ses fonctionnalits de serveur pop et imap. Installer les paquets ncessaires :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet13 sur 37 05/07/2012 12:19 14. aptitude install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-sslditez le fichier /etc/courier/authdaemonrc :authmodulelist="authmysql"ditez le fichier /etc/courier/authmysqlrc :MYSQL_SERVER localhostMYSQL_USERNAME postfixMYSQL_PASSWORD passwordMYSQL_SOCKET /var/run/mysqld/mysqld.sock#MYSQL_PORT 0MYSQL_OPT 0MYSQL_DATABASE postfixMYSQL_USER_TABLE mailboxMYSQL_CRYPT_PWFIELD password#DEFAULT_DOMAIN domain.tldMYSQL_UID_FIELD 5000MYSQL_GID_FIELD 5000MYSQL_LOGIN_FIELD usernameMYSQL_HOME_FIELD "/srv/vmail"MYSQL_NAME_FIELD nameMYSQL_MAILDIR_FIELD maildir#MYSQL_QUOTA_FIELD quota#MYSQL_WHERE_CLAUSE server=exemple.domain.tldJe prfre ne pas binder mes services sur toutes les ips configurs sur la machine. Il faut donc configurer courier pour quil ne bind que les ips voulus.Pour courier-pop ditez le fichier /etc/courier/pop3d et modifiez la ligne PORT=110 par :PORT=127.0.0.1.110,::1.110,213.186.47.110.110,2001:41d0:1:d6e::110.110Pour courier-pop-ssl ditez le fichier /etc/courier/pop3d-ssl et modifiez la ligne SSLPORT=995 par :SSLPORT=127.0.0.1.995,::1.995,213.186.47.110.995,2001:41d0:1:d6e::110.995Pour courier-imap ditez le fichier /etc/courier/imapd et modifiez la ligne PORT=143 par :PORT=127.0.0.1.143,::1.143,213.186.47.110.143,2001:41d0:1:d6e::110.143Pour courier-imap-ssl ditez le fichier /etc/courier/imapd-ssl et modifiez la ligne SSLPORT=993 par :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet14 sur 37 05/07/2012 12:19 15. SSLPORT=127.0.0.1.993,::1.993,213.186.47.110.993,2001:41d0:1:d6e::110.993utiliser les scripts de couriercourier inclut des scripts qui permettent de gnrer automatiquement ces certificats SSL. Pour cela, il faut diter les fichiers /etc/courier/pop3d.cnf et /etc/courier/imapd.cnf puis lancer les commandes suivantes :mkpop3dcertmkimapdcertCrer son propre certificat sign par son autorit de certification.ditez votre fichier /etc/ssl/openssl.cnf et ajoutez les lignes suivantes :[IMAP]nsComment = "SSL Imap Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer:alwaysissuerAltName = issuer:copybasicConstraints = critical,CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEnciphermentnsCertType = serverextendedKeyUsage = serverAuth[POP]nsComment = "SSL Pop Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer:alwaysissuerAltName = issuer:copybasicConstraints = critical,CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEnciphermentnsCertType = serverextendedKeyUsage = serverAuthEncore une fois, les cls ne devront pas tre chiffr avec une passphrase car courier ne les gre pas.Pour crer le certificat du serveur pop :openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout pop.key -out pop.reqopenssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POP -in pop.req -out pop.pemcat pop.key pop.pem > pop3d.pemopenssl gendh >> pop3d.pemmv pop3d.pem /etc/courier/Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet15 sur 37 05/07/2012 12:19 16. rm -rf pop.*Pour crer le certificat du serveur imap:openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:1024 -keyout imap.key -out imap.reqopenssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions IMAP -in imap.req -out imap.pemcat imap.key imap.pem > imapd.pemopenssl gendh >> imapd.pemmv imapd.pem /etc/courier/rm -rf imap.*Et comme dhabitude, on modifie les droits :chmod 600 /etc/courier/*.pemIl ne reste plus qu lancer courier et le tester:/etc/init.d/courier-authdaemon start/etc/init.d/courier-imap start/etc/init.d/courier-imap-ssl start/etc/init.d/courier-pop start/etc/init.d/courier-pop-ssl startAvec le temps, vous en aurez peut-tre assez de devoir relancer chacun de ces scripts. Cest pourquoi jai fait un script abrg :#! /bin/shcase "$1" instart)/etc/init.d/courier-authdaemon start/etc/init.d/courier-pop start/etc/init.d/courier-pop-ssl start/etc/init.d/courier-imap start/etc/init.d/courier-imap-ssl startexit 0;;stop)/etc/init.d/courier-authdaemon stop/etc/init.d/courier-pop stop/etc/init.d/courier-pop-ssl stop/etc/init.d/courier-imap stop/etc/init.d/courier-imap-ssl stopexit 0;;restart)$0 stopMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet16 sur 37 05/07/2012 12:19 17. $0 startexit 0;;*)echo "Usage: $0 {start|stop|restart}"exit 1;;esacmaildrop est un mail delivery agent (MDA). Son rle est de dlivrer les messages reus par un serveur smtp dans les boites mails des utilisateurs. Nous allons mettre en placemaildrop pour remplacer le dmon virtual de postfix parce quil permet de grer les quotas et les filtres.Le paquet maildrop de debian lenny fournit maildrop 2.0.4 qui a un comportement trange dans la gestion des quotas. Pour rgler ce problme il faut compiler soit mmemaildrop 2.0.4.Pour commencer il faut installer g++ ainsi que les paquets courier-authlib-dev et libpcre3-dev :aptitude install g++ courier-authlib-dev libpcre3-devTlchargez maildrop et extrayez le :wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2tar jxf maildrop-2.0.4.tar.bz2il faut maintenant configurer maildrop :cd maildrop-2.0.4./configure -prefix=/usr/local/courier --enable-maildrop-uid=5000 --enable-maildrop-gid=5000 --enable-maildirquota --without-dbIci, on installe maildrop avec lutilisateur duid 5000 et de gid 5000 ce qui correspond notre utilisateur vmail. maildrop sera install dans /usr/local/courierCompilons et installons maildrop :makemake installUne erreur de compilation peut apparatre sur lun des composants. Cela nempchera pas maildrop de fonctionner mais vous pouvez rgler le problme comme ceci :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet17 sur 37 05/07/2012 12:19 18. cd makedatln -s makedatprog.c makedatprogcd ..make installIl faut adapter les droits de /usr/local/courier/bin/ :chown vmail: /usr/local/courier/bin/*chmod o+rx /usr/local/courier/Pour que maildrop fonctionne il faut quil puisse accder au socket de courier situ dans /var/run/courier/authdaemon/ :chgrp vmail /var/run/courier/authdaemon/Le fichier /etc/maildroprc contient la configuration ainsi que les rgles de filtrage par dfaut de maildrop.Pour commencer nous allons activer les logs de maildrop. Ajoutez la ligne suivante dans /etc/maildroprc :logfile "/var/log/maildroprc.log"Crez le fichier de log et attribuez le lutilisateur vmail :touch /var/log/maildroprc.logchown vmail:vmail /var/log/maildroprc.logVous voudrez peut-tre ajouter maildrop la rotation des logs. ditez le fichier /etc/logrotate.d/maildrop et ajoutez y les lignes suivantes :/var/log/maildroprc.log {weeklymissingokrotate 12compressdelaycompressnotifemptycreate 640 vmail vmailsharedscriptspostrotateendscript}Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet18 sur 37 05/07/2012 12:19 19. Pour crer automatiquement la mailbox si elle nexiste pas lors de la rception dun message ajoutez les lignes suivantes /etc/maildroprc :# Si la mailbox reprsent par $DEFAULT nexiste pas`test -e $DEFAULT/`if ( $RETURNCODE != 0 ){# On la cre`maildirmake $DEFAULT`# ainsi que les quelques sous-rpertoire de base`maildirmake -f Junk $DEFAULT``maildirmake -f Sent $DEFAULT``maildirmake -f Trash $DEFAULT`# Puis on change les droits`chmod -R go-rwx $DEFAULT`}Enfin nous allons configurer un fichier de filtre local chaque utilisateur virtuel :# On load les filtres spcifiques de lutilisateur $DEFAULT sils existent`test -r $DEFAULT/mailfilter`if( $RETURNCODE == 0 ){log "(==) Including $DEFAULT/mailfilter"exception {include $DEFAULT/mailfilter}}Par exemple, voici comment je filtre les spams dans mon fichier /srv/vmail/pfoo@csnu.org/mailfilter :if (/^X-Spam-Flag:.*YES/){exception {to $DEFAULT/.Junk/}}Pour le support du quota il faut crer les fichiers ncessaires avec maildirmake. Si la mailbox nexiste pas encore tapez :maildirmake /srv/vmail/test@csnu.orgchown -R vmail:vmail /srv/vmail/test@csnu.orgPour activer le quota pour la mailbox il faut utiliser loption -q de maildirmake. Pour crer une boite de 512 000 000 bytes tapez :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet19 sur 37 05/07/2012 12:19 20. maildirmake -q 512000000S /srv/vmail/test@csnu.orgchown -R vmail:vmail /srv/vmail/test@csnu.orgPour crer une boite pouvant contenir un maximum de 1000 fichiers tapez :maildirmake -q 1000C /srv/vmail/test@csnu.orgchown -R vmail:vmail /srv/vmail/test@csnu.orgmaildrop dlivrera un message derreur lorsquune boite est pleine un certain pourcentage (dfini dans la configuration de postfix). Placez le texte suivant dans /usr/local/courier/etc/quotawarnmsg et assurez vous quil soit lisible par vmail :From: Postmaster csnu.org Reply-To: postmaster@csnu.orgTo: Valued Customer:;Subject: Mail quota warningContent-Type: text/plain; charset=iso-8859-1Content-Transfer-Encoding: 7bitYour mailbox on the server is now more than 90% full. So that you can continue to receive mail you need to remove some messages from your mailbox.Il faut commencer par remplacer [0], # ne pas vrifier le banbypass_header_checks_maps => [1], # ne pas vrifier les headers};Ainsi, les mails reus sur le port 587 passeront par amavis mais ne subiront aucun test de la part de spamassassin et le problme est rgl. La vrification antivirus est ralisenormalement. Notez quil faudra configurer votre logiciel de messagerie pour quil envoi les mails sur le port 587.Par la mme occasion vous pouvez dsactiver lauthentification sur le port smtp (25) en modifiant la ligne smtp de votre master.cf :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet26 sur 37 05/07/2012 12:19 27. smtp inet n - - - - smtpd-o smtpd_sasl_auth_enable=noCela vous permettra par la suite de bloquer facilement une ip (iptables, ...) qui fait du brute-forcing sur votre smtp tout en lui permettant toujours de vous envoyer des mails.Notez cependant quil faudra adapter la configuration de votre webmail afin quil utilise le port 587Depuis la version 3.2 de SpamAssassin le nouveau plugin Mail::SPF est utilis pour la vrification des champs SPF. Ce plugin gre lipv6. Cependant, il semblerait que certainsscripts perl de SpamAssassin ne gre pas ou mal lipv6. Il semble par exemple impossible dajouter une ipv6 aux directives internal_networks ou trusted_networks (ce qui estimportant vis--vis de la vrification SPF). Daprs un message dune mailing-list, ce problme devrait tre corrig pour la version 3.3.0.Commencez par installer ClamAV ainsi que quelques librairies de compressions afin danalyser les archives:aptitude install clamav clamav-daemon gzip bzip2 unzip unrar zoo arjAjoutez lutilisateur clamav au groupe amavis:adduser clamav amavisPour activer le support de clamav de amavis, modifiez le fichier /etc/amavis/conf.d/15-content_filter_mode comme suit :@bypass_virus_checks_maps = (%bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re);Et redmarrez les services :/etc/init.d/clamav-daemon restart/etc/init.d/amavis restartMailman est un trs bon gestionnaire de mailing list. Il possde notamment une interface dadministration web ce qui facilite grandement la gestion des listes, aussi bien du ctMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet27 sur 37 05/07/2012 12:19 28. admin que du ct utilisateur. Pour commencer, installez mailman :aptitude install mailmanPuis ajoutez lutilisateur postfix au groupe listadduser postfix listEnsuite, modifiez le fichier /etc/mailman/mm_cfg.py comme suit :MTA=Postfix#permet dactiver le https par dfaut (si on ne prcise pas https, les POST se passeront mal en https, et on ne pourra rien modifier par linterface web !)DEFAULT_URL_PATTERN = https://%s/cgi-bin/mailman/DEFAULT_EMAIL_HOST = list.csnu.orgDEFAULT_URL_HOST = list.csnu.org# Are archives public or private by default?# 0=public, 1=privateDEFAULT_ARCHIVE_PRIVATE = 1# SUBSCRIBE POLICY# 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) **# 1 - confirmation required for subscribes# 2 - admin approval required for subscribes# 3 - both confirmation and admin approval required## ** please do not choose option 0 if you are not allowing open# subscribes (next variable)DEFAULT_SUBSCRIBE_POLICY = 3Notez que jai spcifi https la ligne DEFAULT_URL_PATTERN. Il est en effet conseill dutiliser une connexion scurise tant donn que les mots-de-passes transitent en clair. Sivous ne spcifiez pas https ici, il sera impossible de modifier des donnes via linterface web. DEFAULT_EMAIL_HOST et DEFAULT_URL_HOST dfinissent simplement les domainesgrs par dfaut par mailman. Lorsque vous ajouterez une mailing list sans spcifier de domaine, ces domaines seront utiliss.ditez le fichier /usr/lib/mailman/Mailman/Defaults.py et vrifiez que les lignes POSTFIX_ALIAS_CMD et POSTFIX_MAP_CMD prcise bien les binaires correspondant depostfix. Thoriquement :POSTFIX_ALIAS_CMD = /usr/sbin/postaliasPOSTFIX_MAP_CMD = /usr/sbin/postmapNote: si vous devez oprer des changements, nditez pas ce fichier, mais plutt /etc/mailman/mm_cfg.py qui est lu aprs celui ci et dont les valeurs crasent celles par dfaut.Ajoutez les lignes suivantes votre fichier /etc/postfix/main.cf :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet28 sur 37 05/07/2012 12:19 29. owner_request_special = noCrez la liste mailman qui est la liste par dfaut de mailman :/var/lib/mailman/bin/newlist mailmanMaintenant, gnrez les alias qui serviront mailman et permettez au groupe list dy crire :/var/lib/mailman/bin/genaliaseschmod g+w /var/lib/mailman/data/aliases*Ceci a pour effet de crer les fichiers /var/lib/mailman/data/aliases et /var/lib/mailman/data/aliases.db qui contiennent les alias ncessaire au fonctionnement demailman. Lorsque mailman est en fonctionnement, la cration des alias se fait automatiquement.Pour que les alias soient reconnus par postfix, il faut modifier la ligne alias_maps du fichier /etc/postfix/main.cf :alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliasesAjoutez lhostname de la mailing list (list.csnu.org dans mon cas) dans le mydestination de /etc/postfix/main.cf :mydestination = core.csnu.org, list.csnu.org, localhost.localdomain, localhostPour activer linterface web, ajoutez les lignes suivantes votre vhost apache :Include /etc/mailman/apache.confIl faut aussi dfinir le mot-de-passe administratif de mailman, qui permettra en particulier dutiliser la page web de cration de liste :/usr/lib/mailman/bin/mmsitepassNous allons maintenant ajouter notre domaine virtuel csnu.org dans la configuration de mailman. Ajoutez les lignes suivantes dans /etc/mailman/mm_cfg.py :POSTFIX_STYLE_VIRTUAL_DOMAINS = [csnu.org]add_virtualhost(www.csnu.org, csnu.org)Et comme prcdemment, il faut prciser postfix o trouver les alias pour les listes @csnu.org. Modifiez le fichier /etc/postfix/main.cf :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet29 sur 37 05/07/2012 12:19 30. virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailmanIl ne reste plus qua redmarrer les services/etc/init.d/postfix restart/etc/init.d/apache restart/etc/init.d/mailman restartPour ajouter une liste, il ne reste plus qua utiliser le binaire /usr/lib/mailman/bin/newlist. Par exemple :/usr/lib/mailman/bin/newlist --urlhost=list.csnu.org --emailhost=csnu.org test@csnu.orgNotez quil faut laisser le site comme tant list.csnu.org sinon vous ne pourrez pas administrer la liste.Noubliez pas de gnrer la liste des alias :/var/lib/mailman/bin/genaliasesSi vous navez pas de dossier "fr" dans /etc/mailman, tlchargez mailman sur http://www.gnu.org/software/mailman/ et copiez le dossier "fr" situ dans le rpertoire templates delarchive.Si vous voulez limiter laccs aux pages des listes avec un htaccess vous devrez ajouter les lignes ncessaires dans le fichier /etc/mailman/apache.conf de cette manire :AllowOverride NoneOptions ExecCGIAddHandler cgi-script .cgiOrder allow,denyAllow from all#auth de type digestAuthType DigestAuthName "un realm"AuthDigestProvider fileAuthDigestDomain /AuthUserFile /chemin/vers/votre/.htpasswdAuthGroupFile /chemin/vers/votre/.htgrouprequire valid-userMise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet30 sur 37 05/07/2012 12:19 31. Jen ais vite eu marre de devoir retaper des lignes mysql relativement longues pour ajouter et modifier des utilisateurs. Jai donc cr quelques scripts bash histoire de me simplifierla vie. Les voici (http://wiki.csnu.org/upload/mail_scripts.tar.bz2) .Vous naurez peut-tre pas toujours accs votre client mail, particulirement lorsque vous tes en dplacement. Il devient alors trs intressant de pouvoir relever son courrierlectronique par une interface web. Jai retenu deux clients : Squirrelmail pour sa clart et sa simplicit, et RoundCube pour son ct esthtique.Tlchargez la dernire version de squirrelmail sur http://www.squirrelmail.org/download.php. Transfrez la sur votre serveur (ou utilisez wget pour la tlcharger directement survotre serveur). Pour ma part, jai tlcharg larchive dans le dossier root. Je vais donc la dplacer dans le dossier de ma vhost webmail, puis lextraire:mv /root/squirrelmail-1.4.13.tar.gz /srv/http/csnu.org/webmail.csnu.org/cd /srv/http/csnu.org/webmail.csnu.org/tar zxvf squirrelmail-1.4.13.tar.gzmv squirrelmail-1.4.13 squirrelchown -R root:www-data squirrel/chmod -R g-w,o-rx squirrel/Pour la configuration, squirrelmail dispose dun outil de configuration graphique. Pour le lancer, utilisez :squirrel/config/conf.plBien-sur, vous pouvez aussi modifier la configuration la main si vous le souhaitez. Il faut alors diter le fichier squirrel/config/config.php. Voici les lignes importantes modifier :$domain = csnu.org;$imap_server_type = courier;#Par dfaut, les donnes de squirrel sont stocks dans un autre rpertoire. Je prfre les avoir dans la mme arborescence.$data_dir = /srv/http/csnu.org/webmail-data/squirrel/data/;$attachment_dir = /srv/http/csnu.org/webmail-data/squirrel/attach/;#Cette ligne est trs importante. Si elle est false, lorsque quelquun se log une premire fois avec pfoo@csnu.org et une seconde fois avec PFOO@csnu.org, les prfrence$force_username_lowercase = true;#Etant donn quon se connecte en local, nous navons pas besoin de nous authentifier et dutiliser le port submission (587).$smtpServerAddress = localhost;$smtpPort = 25;$smtp_auth_mech = none;$imap_auth_mech = login;#Par dfaut, on se connecte en local. Le TLS nest donc pas ncessaire. Vous pouvez lactiver en passant ces lignes true. Notez que le mcanisme STARTTLS nest support$use_imap_tls = false;$use_smtp_tls = false;Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet31 sur 37 05/07/2012 12:19 32. Il faut crer les dossiers /srv/http/csnu.org/webmail-data/squirrel/data/ et /srv/http/csnu.org/webmail-data/squirrel/attach/ et modifier leurs droits carsquirrel aura besoin de lire et dcrire dans ces dossiers.mkdir -p /srv/http/csnu.org/webmail-data/squirrel/data/mkdir /srv/http/csnu.org/webmail-data/squirrel/attach/chown -R root:www-data /srv/http/csnu.org/webmail-data/chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/Vous pouvez maintenant tester squirrelmail. Vous pouvez vrifier que vous navez pas fait derreur de configuration en allant ladresse https://votre-webmail/squirrel/src/configtest.phpPar dfaut, seule la langue anglaise est disponible. Tlchargez le fichier all_locales sur http://squirrelmail.org/download.php$ tar zxvf all_locales-1.4.13-20071220.tar.gz$ ./installPlease enter path to your squirrelmail installation: /srv/http/csnu.org/webmail.csnu.org/squirrel/$ chgrp -R /srv/http/csnu.org/webmail.csnu.org/squirrel/Tlchargez le plugin voulu dans le dossier plugins/ de votre installation de squirrelmail. Extrayez larchive avec tar. Lisez le fichier INSTALL fournit avec le plugin, etconfigurez le si ncessaire (fichier config.php). Enfin, pour activer le plugin, utilisez le script de configuration config/conf.pl.Voici les plugins que jutiliseSquirrel LoggerAddressbook Import-ExportShow User and IPJavaScript ClockTous les plugins peuvent tre trouvs sur le site officiel de squirrelmail (http://squirrelmail.org/plugins.php) .Ajout de votre favicon personnalisSi vous voulez utiliser un favicon pour squirrelmail, il faut modifier les sources.Modifiez le fichier functions/page_header.php et recherchez la ligne echo "n$title$xtran";. Ajoutez en dessous delle la ligne suivante :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet32 sur 37 05/07/2012 12:19 33. echo "nn";Modifiez le fichier src/webmail.php et recherchez la ligne n .. Ajoutez en dessous delle la ligne suivante :"n" .Modifiez le fichier src/signout.php et recherchez la ligne . Ajoutez en dessous delle la lignesuivante :Tlchargez la dernire version de roundcube sur http://roundcube.net/downloads. Transfrez la sur votre serveur (ou utilisez wget pour la tlcharger directement sur votreserveur). Pour ma part, jai tlcharg larchive dans le dossier root. Je vais donc la dplacer dans le dossier de ma vhost webmail, puis lextraire:mv /root/roundcubemail-0.3.1.tar.gz /srv/http/csnu.org/webmail.csnu.org/cd /srv/http/csnu.org/webmail.csnu.org/tar xf roundcubemail-0.3.1.tar.gzmv roundcubemail-0.3.1/ roundcubemailchown -R root:www-data roundcubemailLes dossiers temp et logs doivent pouvoir tre crit par le serveur web:chmod g+w roundcube/temp/chmod g+w roundcube/logs/Nous allons maintenant crer la base de donne mysql roundcubemail ainsi que lutilisateur roundcube identifi par le mot-de-passe "password" :$ mysql -u root -pCREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhostIDENTIFIED BY password;quitSi vous utilisez open-basedir sur la vhost, ajoutez le chemin /srv/http/csnu.org/webmail.csnu.org/www/roundcubemail/program/lib/ la liste des chemins autoriss paropen-basedir.Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet33 sur 37 05/07/2012 12:19 34. La suite de linstallation se passe par le web. Il suffit daller ladresse http:///url-de-roundcube/installer/ et de suivre les instructions.Si a la premire tape, il vous manque lextension fileinfo de php, installez la puis recommencer la premire tape :aptitude install php-pear php5-dev libmagic-devpecl install fileinfoecho "extension=fileinfo.so" > /etc/php5/conf.d/fileinfo.ini/etc/init.d/apache2 restartSil vous indique un problme au niveau de date.timezone, ditez votre php.ini et vrifiez que la directive date.timezone est bien d-commente (pas de ;) et est biendfinie. Pour un serveur en France :date.timezone = Europe/ParisPetite aide pour ltape de configuration des ports :Dans Database setup : indiquez le mot-de-passe de la base de donne dans Database passwordDans IMAP Settings : indiquez tls://localhost dans default_hostDans SMTP Settings : indiquez localhost dans smtp_server et 587 dans smtp_port (il nest pas ncessaire de prciser tls://, si tls est disponible, il lutiliseraautomatiquement)Dans SMTP Settings : cochez la case Use the current IMAP username and password for SMTP authentication pour smtp_user/smtp_Dans Display settings & user prefs : indiquez fr_FR dans locale_stringQuand vous aurez valid ltape 2, linterface vous demandera de copier des lignes dans roundcubemail/config/main.inc.php et roundcubemail/config/db.inc.php. Aprsavoir copi les lignes avec votre diteur de texte, modifiez les droits de ces fichiers :chgrp www-data roundcube/config/*A ltape 3, roundcube vous propose de tester la configuration smtp et imap. Faites le. Aprs avoir test la configuration, noubliez pas de supprimer roundcube/installer:rm -rf roundcube/installerPour ma part, jai eu un bug avec la configuration imap. Malgr avoir dfini tls://localhost et le port 143, roundcube essayait de se connecter en tls sur le port 993. Lasolution a t de prciser le port 143 dans la ligne de lhostname comme ceci (fichier roundcubemail/config/main.inc.php) :$rcmail_config[default_host] = tls://localhost:143;Si vous avez configur le port smtp sur 587 (submission), le test de configuration de marchera pas, mais cela fonctionne quand mme.Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet34 sur 37 05/07/2012 12:19 35. Un beau jour, je me suis pos la question de comment consulter des mails par le wap de mon tlphone portable. Eh bien, cest possible avec wapreader. Je ne lutiliseactuellement pas mais voici ce que jai du faire :installer php5-imap (aptitude install php5-imap)Suivre les instructions du fichier dinstallationJai du modifier le fichier .php de la manire suivante :if($_REQUEST["mode"]=="html") {//@header("Content-type: text/xml; charset=utf-8");echo "n";echo "";}Si vous avez un second serveur il devient trs intressant dinstaller un serveur mx secondaire pour votre domaine. En effet, si pour une raison ou une autre, votre serveur smtpfraichement configur venait tre inaccessible pendant quelques heures, toutes les personnes essayant de vous envoyer un mail durant ce labs de temps verraient leurs mailsrevenir en erreur. Un mx secondaire rgle ce problme : si le serveur principal ne rpond pas, les mails seront adresss au mx secondaire qui se chargera de les transfrer au mxprincipal ds que possible.Il faut commencer par ajouter le nouveau serveur de mail dans la configuration de la zone dns. Dans mon cas :core.csnu.org. IN A 213.186.47.110core.csnu.org. IN AAAA 2001:41d0:1:d6e::110core.csnu.org. IN MX 1 core.csnu.org.core.csnu.org. IN MX 10 onyx.csnu.org.csnu.org. IN MX 1 core.csnu.org.csnu.org. IN MX 10 onyx.csnu.org.onyx.csnu.org. IN A 217.70.189.92Le mx secondaire est onyx.csnu.org. Le chiffre 10 avant le nom du serveur est ce quon appel le priorit. Les serveurs smtp voulant vous envoyer des mails essaieront en prioritle mx ayant la priorit la plus basse.Ensuite, installez postfix si votre second serveur :aptitude install postfixLa configuration de /etc/postfix/main.cf est beaucoup plus simple :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet35 sur 37 05/07/2012 12:19 36. smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)biff = nodisable_vrfy_command = yessmtpd_helo_required = yesmydomain = onyx.csnu.orgappend_dot_mydomain = yesmyhostname = onyx.csnu.orgmyorigin = /etc/mailnamemydestination = onyx.csnu.org, localhost.localdomain, localhostrelayhost =mynetworks = 127.0.0.0/8mailbox_size_limit = 0recipient_delimiter = +message_size_limit = 10240000inet_interfaces = 127.0.0.1, 217.70.189.92inet_protocols = ipv4alias_maps = proxy:hash:/etc/aliasesrelay_domains = core.csnu.org, csnu.orgsmtpd_sender_restrictions =reject_unknown_sender_domain,reject_non_fqdn_sendersmtpd_recipient_restrictions =permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unauth_destination,reject_unauth_pipelining,reject_invalid_hostname,La directive relay_domains dfini les domaines pour lesquels postfix est un mx secondaire. Les mails reus pour ces domaines seront stocks et redirigs ds que possible vers lemx de priorit la plus basse.Si vous utilisez un champ spf du mme type que celui dont jai donn lexemple au dbut de ce howto vous navez rien modifier car tous les serveurs mx des domaines sontconsidrs comme valide.Il peut tre intressant dajouter une directive relay_recipient_maps la configuration afin de bloquer directement les mails destin un utilisateur qui nexiste pas sur leserveur principal. Il faudra cependant veiller bien garder synchronis les listes dutilisateur entre le serveur principal et le serveur secondaire.Assurez vous que le fichier de configuration de postfix est accessible en lecture :chmod o+r /etc/postfix/main.cfNoubliez pas de crer la base de donne des alias avant de lancer postfix :Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet36 sur 37 05/07/2012 12:19 37. postalias /etc/aliasesRcupre de http://wiki.csnu.org/index.php?title=Mise_en_place_d%27un_serveur_de_mail_complet Catgories : Serveur | DebianDernire modification de cette page le 17 aot 2011 14:11.Cette page a t consulte 1 250 fois.Contenu disponible sous GNU Free Documentation License 1.3.Mise en place dun serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_dun_serveur_de_mail_complet37 sur 37 05/07/2012 12:19

Recommended

View more >