Category Archives: mail

Supprimer les dossiers publics d'un Serveur Exchange 2007

Lorsque j’essayais de supprimer un serveur exchange 2007 de notre organisation, après avoir transféré tous les réplicas, la désinstallation échouait systématiquement à cause de réplicas.

J’ai trouvé les commandes suivantes qui sont radicales mais fonctionnent :

Pour effacer tous les dossiers publics utilisateurs d’un serveur :

Get-PublicFolder -Server <server containing the public folder database> "\" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server <server containing the public folder database> -Recurse -ErrorAction:SilentlyContinue

Pour effacer tous les dossiers publics système d’un serveur :

Get-PublicFolder -Server <server containing the public folder database> "\Non_Ipm_Subtree" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server <server containing the public folder database> -Recurse -ErrorAction:SilentlyContinue

Pour vérifier que tous les dossiers publics ont bien été effacé :

Get-PublicFolderStatistics -Server <server containing the public folder database>

Nos dossiers publics n’ont pas été supprimés et j’ai enfin pu désinstaller exchange de ce serveur récalcitrant.

entourage et Exchange 2007

Lors de notre passage à Exchange 2007, les clients Entourage ne pouvaient plus se connecter.

C’est le site de microsoft qui a fini par m’apporter la réponse : il ne faut pas se contenter de mettre le nom du serveur dans la case : nom de serveur….. il faut mettre

mail.contoso.com/exchange/user@contoso.com

Le pire c’est que lorsque je mettais mail.contoso.com je n’avais aucune erreur, tous les tests étaient passés avec succés, mais il ne me listait jamais les dossiers…

C’était à cette adresse : http://support.microsoft.com/kb/931350/en-us

émulateur Windows Mobile

Voici où trouver un petit émulateur bien pratique pour Windows Mobile 6.0 (dans toutes les langues). Pro ou standard…

Il s’installe sur Windows XP, Vista ou même 2003.

http://www.microsoft.com/downloads/details.aspx?familyid=38C46AA8-1DD7-426F-A913-4F370A65A582&displaylang=en

Par contre afin qu’il puisse utiliser la carte réseau de votre ordinateur pour aller sur internet il faut installer Virtual PC 2007, qui se trouve à cette adresse : http://www.microsoft.com/downloads/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&DisplayLang=fr

Etat de la connexion Outlook à Exchange

c’est sur http://office.microsoft.com/fr-fr/outlook/HP010363941036.aspx que je découvre cette astuce permettant de visualiser la connexion au serveur Exchange (TCP/IP ou HTTP) :

Cette fonctionnalité nécessite que vous utilisiez un compte de messagerie Microsoft Exchange Server 2003. Si vous ne savez pas quelle version d’Exchange Server votre compte de messagerie utilise, contactez votre administrateur Exchange.

Si vous vous connectez à votre serveur Exchange via Internet et que vous n’utilisez pas de réseau privé virtuel (réseau privé virtuel (VPN) : extension d’un réseau privé englobant des liens encapsulés, cryptés et authentifiés sur des réseaux partagés et publics. Les connexions VPN offrent un accès et des connexions à distance aux réseaux privés via Internet.), ni de connexion au réseau de votre organisation, vous pouvez vérifier votre connexion en procédant comme suit :

  1. Appuyez sur la touche CTRL en la maintenant enfoncée, puis cliquez avec le bouton droit sur l’icône Microsoft Outlook dans la zone de notifications.Un nouvel élément de menu, État de la connexion, apparaîtra dans le menu de la zone de notification.
  2. Cliquez sur État de la connexion.Sous Activité, la colonne Conn doit afficher HTTP, et la colonne État doit afficher Établie. Il s’agit de la confirmation que vous êtes bien connecté à votre serveur Exchange via Internet. Si la colonne Conn affiche TCP/IP, vous êtes connecté via votre réseau local.

Installer Exchange 2007 sur Windows 2008 : un vrai jeu de pistes

On pourrait penser que ces 2 derniers nés de Microsoft sont encore plus facile à installer l’un sur l’autre que les prédécesseurs. Il faut dire que lors de l’installation d’Exchange 2003 on était si bien guidé… à vrai dire c’est plutôt un jeu de piste où Google est votre ami… je ferais une meilleure doc après coup, mais en attendant jugez un peu vous même des obstacles :

  1. Première chose il impose l’installation de Powershell et envoi sur le site de Microsoft, qui ne le propose que pour windows 2003 et en realese candidate 2 pour windows 2008… google nous apprend grace à un forum qu’en réalité powershell est un composant inclu dans windows 2008 qu’il faut juste l’installer à partir gestionnaire de serveur.
  2. IIS avec le composant ASP.NET doit être installé aussi.
  3. Voici les commandes possibles pour préparer l’active directory :
setup.com /PrepareLegacyExchangePermissions Ce commutateur doit être utilisé si des versions précédentes d’Exchange (2000 ou 2003) ont déjà été déployées dans la forêt. Il permet de modifier les autorisations associées au groupe Enterprise Exchange Servers (sans cela le service de mise à jour des destinataires d’Exchange 2007 ne pourra pas fonctionner correctement).
setup.com /PrepareSchema Ce commutateur permet de modifier le schéma Active Directory et d’y ajouter toutes les classes et tous les attributs nécessaires au bon fonctionnement d’Exchange Server 2007. Il est recommandé d’exécuter cette commande dans le même domaine et dans le même site Active Directory que le contrôleur de schéma (voire d’exécuter la commande localement sur le contrôleur de schéma).
setup.com /PrepareAD /OrganizationName:<NOM-ORGA> Ce commutateur permet de créer l’organisation Exchange (c’est à dire le conteneur stockant les paramètres d’Exchange dans la partition de configuration Active Directory). Dans un second temps, il prépare le domaine en créant une unité d’organisation contenant les groupes universels de sécurité nécessaires à Exchange. Si les deux commandes précédentes (/PrepareLogacyExchangePermissions et /PrepareSchema) n’ont pas été exécutées, le commutateur /PrepareAD les lance automatiquement. L’utilisation du commutateur /OrganizationName est obligatoire si et seulement si aucune version précédente d’Exchange n’est présente. En effet dans le cadre d’une migration depuis Exchange 2000/2003 vers Exchange 2007, l’organisation est déjà présente
setup.com /PrepareDomain Ce commutateur prépare le domaine actuel en créant une unité d’organisation contenant le ou les groupes nécessaire au bon fonctionnement d’Exchange Server 2007. Cette option n’est utile que dans une infrastructure multidomaine (on exécute /PrepareAD dans un premier domaine, puis /PrepareDomain dans chacun des domaines restants).
setup.com /PrepareAllDomains Ce commutateur permet de préparer tous les domaines de la forêt en une seule opération (cela revient à exécuter /PrepareDomain dans chacun des domaines).

Voici une liste de scénarios possibles.

Dans une infrastructure monodomaine (si aucune ancienne version d’Exchange n’est déployée) vous pouvez :

  1. Lancer uniquement la commande /PrepareAD
  2. Ou bien lancer la commande /PrepareSchema, puis /PrepareAD

Dans une infrastructure monodomaine (si une ancienne version d’Exchange est utilisé ou a été utilisée) vous pouvez :

  1. Lancer uniquement la commande /PrepareAD
  2. Ou bien lancer les commandes /PrepareLegacyExchangePermissions, puis /PrepareSchema, et enfin /PrepareAD

Dans une infrastructure multidomaine vous pouvez :

  1. Lancer uniquement les commandes /PrepareAD et /PrepareAllDomains
  2. Ou bien lancer les commandes : /PrepareLegacyExchangePermissions, /PrepareSchema, PrepareAD, puis /PrepareDomain pour chacun des domaines de la forêt

Forcément la commande setup.com indique qu’elle n’est pas utilisable avec cette version de windows… je le lance donc à partir d’un ordinateur sous Windows 2003, mais là je n’ai que des machines 32bits, donc je télécharge la version d’essai 32bits : http://www.microsoft.com/technet/prodtechnol/eval/exchange/default.mspx. Elle fait un peu plus d’1Go. Bien sûr pour que ça fonctionne il faut installer PowerShell sur votre serveur 32bits… (comme dit Arnaud en me voyant m’arracher les cheveux : “il vous faut le formulaire bleu…“).

Attention à executer setup.com sur un serveur qui n’a pas exchange, sous peine d’avoir le message : “Une version précédente d’Exchange Server est déjà installée sur cet ordinateur. Exécutez le programme d’installation Exchange 2007 depuis un autre ordinateur ou supprimez la version précédente d’Exchange Server“. Pour ma part, j’ai du finir par l’installer à partir d’un simple ordinateur windows XP, donc avec la version PowerShell pour Windows XP SP2. J’espère qu’il ne va pas de demander le formulaire jaune E832192… ah ben si : “Lorsque vous exécutez Exchange Server 2007 Service Pack 1 (SP1) sous Windows Server 2003 ou une version antérieure du système d’exploitation, il est recommandé d’installer Microsoft .NET Framework 2.0 Service Pack 1 (SP1). Si vous ne pouvez pas installer .NET Framework 2.0 SP1, installez le correctif décrit dans l’article 942027 de la Base de connaissances de Microsoft à l’adresse http://go.micro
soft.com/fwlink/?linkid=101219.

Ah déjà plus important : “Au moins un connecteur Active Directory trouvé. Supprimez tous les connecteurs Active Directory avant d’installer Exchange 2007.“.

Donc j’installe le framework (via windows update) et je supprime le connecteur… que sera la suite ?

La suite : “L’ordinateur local n’a peut-être pas les informations de Registre ou les librairies requises pour afficher les messages émanant d’un ordinateur distant. Vous pourrez peut-être utiliser l’option /AUXSOURCE= pour récupérer cette description”… setup.com ne connait pas l’option AUXSOURCE…

J’abandonne donc l’idée d’une version 32bits car tous mes serveurs possèdes exchanges (et oui on a eu besoin de 3 exchanges avec cette limitation stupide à 75Go…). Je télécharge donc la version 64bits en essai, car elle contient le service pack1, peut être qu’elle acceptera de fonctionner sur Windows 2008 ?

Là je suis bien content de voir que le SP1 fait que setup.com accepte enfin de se lancer sur Windows 2008, mais la bête ne se rend pas comme ça, j’ai dû oublier le forlumaire X34927 : “Le schéma Active Directory n’est pas actualisé et Ldifde.exe n’est pas installé sur cet ordinateur. Vous devez installer Ldifde.exe en exécutant « ServerManagerCmd -i RSAT-ADDS » ou redémarrer le programme d’installation sur le contrôleur de domaine.”

Ok je lance “ServerManagerCmd -i RSAT -ADDS”, c’est que je l’écoute la dame derrière son guichet…

Mince il faut redémarrer le serveur, heureusement que c’est un serveur test !

Nouveau message lors du lancement suivant de setup.com : “Cet ordinateur n’appartient pas à un site Active Directory valide. Vérifiez les définitions du site et du sous-réseau”. Je décide donc de lancer un dcpromo pour passer ce serveur temporaire en Controleur de Domaine…

Ah ben là… Microsoft a fait très fort : “Contrôles de l’organisation      ……………………. TERMINÉE”… on y croit !!! la suite est prometeuse : “Si vous continuez, le schéma Active Directory sera mis à niveau. Vérifiez que l’organisation est prête pour Exchange 2007 en effectuant les tests de préparation Exchange 2007 exécutés par l’outil Exchange Best Practices Analyzer.”.

IL AURAIT PU PARLER DE CE EXCHANGE BEST PRACTICES ANALYZER AVANT !!!!!!

Sinon j’ai un echec car il ne trouve pas un fichier idf dans le dossier d’installation setup\serverroles\common\setup\data , je découvre avec effarement que ce dossier est vide alors qu’il est rempli de fichier dans le 2e serveurs que je prépare… le même fichier téléchargé ne se décompresse t il pas partout pareil ? bon je relance l’extration de l’archive, les fichiers sont bien là et je relance la commande…

j’ai du m’endormir, je dois réver, après ça voici le message :

Préparation de l’organisation    ……………………. TERMINÉE
L’opération d’installation de Microsoft Exchange Server est terminée.

Je rêve où il capitule ?? l’acharnement de l’informaticien l’emporte encore… bon ça signifie donc que… ah oui la préparation de l’AD est enfin ok pour commencer l’installation d’Exchange, mince… c’est pas si glorieux de n’arriver qu’à pouvoir enfin commencer à lancer l’installation après autant d’heures.

Donc je lance l’installation de la version d’essai avec SP1 car la notre n’accepte toujours pas Windows 2008… SP1 obligatoire donc pour Windows 2008…

Roh, moi qui ait cru que ça irait tout seul à présent (ah bon j’ai vraiment pu croire ça ? non c’est une façon de parler voyons !).

J’ai pourtant installé IIS avec ASP.net comme recommandé par labo-microsoft.com… ça ne suffit apparement pas.

J’installe la liste impressionnante d’éléments qui doivent l’être (même du Windows Media Encoder, et du Windows Media Audio Voice Codec que je n’ai pas trouvé, j’ai donc installé plutôt “Expérience audio-vidéo haute qualité Windows” qui oblige à redémarrer le serveur…)

Et je reste bête quand je vois l’avertissement suivant… l’informatique ce n’est pas censé automatiser ces choses là ?

Windows Media Encoder, et du Windows Media Audio Voice Codec étant introuvables sur Windows 2008 (je dois vraiement changer de métier pour ne pas trouver un truc si simple) je décide d’installer Exchange 2007 sans l’option “Rôle de serveur de messagerie unifiée”. Nous effectuerons notre connexion à notre téléphonie IP quand j’aurais trouvé ces Windows Media Encoder, et du Windows Media Audio Voice Codec…

Et voila, ça fait vraiment une sensation étrange après autant de résistance, Exchange s’installe vraiment !!!

Donc j’installe ça sur un 2e serveur de test se trouvant à des centaines de kilomètre, ça sera nos 2 serveurs test, mais là j’ai une superbe erreur lors de l’installation :

“Échec du composant Exchange Server Rôle de transport Hub.
Erreur : Erreur :
Échec du démarrage du service « MSExchangeTransport ». Consultez le journal des événements pour déterminer les raisons possibles de l’échec du démarrage du service.”

Je vais dans l’observateur d’évènements et le message est…….. le même…… Je voudrais bien être beta testeur chez microsoft, parce que là ça devient ridicule…

Ensuite, installons RPC over HTTP car on sait (c’est écrit partout sauf sur exchange) que pour Outlook Anywhere il le faut (permet d’utiliser outlook sans connexion vpn grace à une connexion HTTPS). Pour cela il faut aller dans “ajouter des fonctionnalités” qu’on trouve en ayant cliqué sur “fonctionnalités” dans le gestionnaire de serveur.

Lors du déplacement de la première boite utilisateur dessus, j’ai le message d’erreur “serveur exchange 2007 introuvable avec un service de liste d’adresses actif” je trouve sur un forum que cela signifie que le service “Microsoft Exchange – Surveillance du système” n’est pas démarré… en effet je le démarre manuellement (alors qu’il est en automatique) et le déplacement de la boite se fait enfin.

Après une bonne semaine à ne pas comprendre pourquoi mon téléphone windows et mon service SMTP tombent sur un mauvais certificat. Grâce à http://www.forum-microsoft.org/post575627.html j’apprends que même si je n’ai aucun message d’erreur l’indiquant, l’usage d’un certificat en *.company.com provoque des soucis… je passe donc à un certificat en mail.company.com et en effet ça fonctionne mieux. Conclusion je ne fais plus qu’un seul certificat contenant tous les noms dont j’ai besoin, et il y a la marche à suivre indiquée sur le site de microsoft : http://technet.microsoft.com/fr-fr/library/aa995942(EXCHG.80).aspx

En réalité equifax a refusé cette requete, il a fallut que je change le subjectname en ajoutant des informations, ça a donné plutôt ce qu’on voit dans mon article : http://offroad.gonzofamily.com/2008/10/29/certificats-a-plusieurs-noms-pour-exchange/ mais finalement equifax n’a validé que le CN et a ignoré tous les AltName… donc j’ai fini par utiliser notre propre autorité de certification et cela m’oblige à installer le certificat sur tous les téléphones mobiles et les mac de la boite.

C’est cette commande au finale qui aura créer la requete :

New-ExchangeCertificate -generaterequest -subjectname “C=FR, ST=Ile-de-France, L=Paris, O=nom de ma Company, OU=IT Service, CN=exchange.company.com” -domainname exchange.company.com, srv-exch-01.company.com, srv-exch-01, srv-exch-01.company.local, webmail.company.com, smtp.company.com, autodiscover.company.com, autodiscover.company.local   -PrivateKeyExportable $true -path c:\certrequest_equifax.txt

Les commandes suivantes m’ont permis d’installer le certificat puis de l’activer (j’ai du enlever UM car je ne l’ai pas encore installé)

Import-ExchangeCertificate -Path c:\certificates\filename.cer -friendlyname “Contoso CAS01”

dir cert:\LocalMachine\My | fl

Services: [PS] C:\Windows\System32>Enable-ExchangeCertificate -Thumbprint B240….1A8C98 -Services “IMAP, POP, UM, IIS, SMTP”

Je découvre grâce à http://blog.aaronmarks.com/?p=65 qu’il y a un bug lorsqu’on utilise Outlook Anywhere avec un serveur Windows 2008. Ce qui explique ma demande de mot de passe en boucle lorsque j’essayais d’utiliser outlook en https…. Donc j’ajoute une clé DWORD 32 bits nommé DisabledComponents dans HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters dont la valeur est 0xff. Puis je commante avec un # les lignes concernant le localhost ipv6 dans le fichier %SYSTEMROOT%\System32\drivers\etc\hosts . Enfin pour une certitude absolue on désactive l’ipv6 dans les connexions réseaux également.

Les stratégies de destinataires ne sont pour l’instant gérables que sur 2003, nous transferons donc celà (de fraçon irréversible) sur 2007 :

Set-EmailAddressPolicy -ForceUpgrade -Identity:”Default Policy” -IncludedRecipients “allrecipients”

je crée un connecteur d’envoi car les connecteurs d’envoie de 2003 ne sont pas exportable. Configuration de l’organisation/transport hub puis l’onglet Envoyer les connecteures, puis “Nouveau connecteur d’envoie” dans actions.

Je déplace le carnet d’adresses en mode hors connexion sur mon nouveau serveur : configuration de l’organisation/Boîte aux lettres, onglet Carnet d’adresses en mode hors connexion, dans actions on trouve “Déplacer…”. Puis dans les propriétés j’active la distribution web.

Il reste à déplacer les boitês aux lettres et les dossiers publiques : pour les dossiers publique c’est dans la console exchange 2003, dans banque de dossiers publics du serveur concerné, un clique droit donne accès à “Déplacer tous les réplicas” mais j’obtiens le message d’erreur suivant :

” Le service HTTP utilisé par les dossiers publics n’est pas disponible ; les causes possibles sont que les banques publiques ne sont pas montées et que le service de banque d’informations n’est pas en cours d’exécution.

ID de l’erreur : c1030af3

Gestionnaire système Exchange “

le problème est connu ici : http://support.microsoft.com/kb/840182/fr

Une fois tout cela fini, mon serveur exchange 2003 était un controleur de domaine avec le shéma global… je lance donc un DCPromo timide :

l’opération a écoué car : impossible de configurer le service NetLogon comme requis “dépassement du délai d’attente”

Décidément, jamais rien n’est simple… ne trouvant pas de solution satisfaisante, je relance le DCPromo et cette fois ça marche… no comment

Ne supportant plus d’avoir des erreurs de certificats sur outlook 2007 à cause du nom de mon serveur en serveur1.domaine.local, j’ai appliqué le script de cette page.

Exchange 2007 and mailboxes size list ?

I found a solution here, the paste/copy follows :

You would have noticed that you are not able to see the Total Items and Size (KB) of user’s mailboxes in Exchange Management Console of 2007. Even you are not able to add columns optionally.

image

Like you were able to see in Exchange System Manager of version 2003 displayed below.

image

Now question is where to see/add those options… Your answer is run the PowerShell command to see those options.

When I run below command in Exchange Management Shell for Database name “Mailbox Database”, it gives similar output to ESM 2003. Only difference is it shows size in Bytes instead of KB.

Get-MailboxStatistics -database “Mailbox Database” | Select DisplayName, LastLoggedOnUserAccount, ItemCount, TotalItemSize, LastLogonTime, LastLogoffTime | Format-Table

image

Now if I want to export this into CSV the I need to run below command.

Get-MailboxStatistics -Database “Mailbox Database” | Select DisplayName, LastLoggedOnUserAccount, ItemCount, TotalItemSize, LastLogonTime, LastLogoffTime | Export-CSV test.csv

image

Now lets say I want size in MB then I  need to run below command.

Get-MailboxStatistics -Database “Mailbox Database” | Format-Table DisplayName, LastLoggedOnUserAccount, ItemCount, @{expression={$_.totalitemsize.value.ToMB()};label=”Size(MB)”}, LastLogonTime, LastLogoffTime

image

If I want to sort this report by Mailbox Size then I need to run below command.

Get-MailboxStatistics -Database “Mailbox Database” | Sort -Property TotalItemsize | Format-Table DisplayName, LastLoggedOnUserAccount, ItemCount, @{expression={$_.totalitemsize.value.ToMB()};label=”Size(MB)”}, LastLogonTime, LastLogoffTime

image

  • In these examples we got reports for database “Mailbox Database” in same way we can get it for whole server with below command.

Get-MailboxStatistics -Server MailboxServer01

  • Here we added DisplayName, LastLoggedOnUserAccount, ItemCount, TotalItemSize, LastLogonTime, LastLogoffTime columns in our report and in same way we can add below list of columns …

AssociatedItemCount
Database
DatabaseName
DeletedItemCount
DisconnectDate
DisplayName
Identity
ItemCount
LastLoggedOnUserAccount
LastLogoffTime
LastLogonTime
LegacyDN
MailboxGuid
ServerName
StorageGroupName
StorageLimitStatus
TotalDeletedItemSize
TotalItemSize

Synchroniser les états libre/occupé des calendriers de 2 organisations Exchange

Une société ayant rejoint notre groupe, nous nous trouvons temporairement avec 2 organisations exchange. Les utilisateurs veulent connaitre les disponibilités des 2 organisations.

C’est l’outils Microsoft Exchange Server Inter-Organization Replication , qui n’existe qu’en anglais qui permet de synchroniser 2 organisations Exchange. Il faut l’installer sur un serveur Windows 2003 qui a les outils de gestion Exchange ou sur un serveur Exchange 2003.

Dans notre cas, étant donné qu’une des organisations exchange fonctionne sur un serveur Windows 2008 et Exchange 2007, le choix est vite fait : nous installerons l’outils sur un de nos serveurs Exchange 2003.

  1. Il faut créer un compte sur chaque organisation qui sera utilisé par l’outils.
  2. Créer un dossier public nommé ExchsyncSecurityFolder sur chaque serveur visible que de cet utilisateur
  3. Se loger avec cet utilisateur au moyen d’outlook pour initialiser le compte et vérifier les accès.
  4. Créer un fichier de configuration en exécutant le fichier Exscfg.exe (dans le menu session, choisir “ajouter”)
  5. Créer ainsi les 2 sens de synchro (en précisant manuellement les comptes NT à utiliser). Puis choisir Enregistrer sous…
  6. Lancer exssrv.exe, choisir installer et indiquer un compte qui se autorisé à faire fonctionner ce service, dans mon cas j’ai pris administrateur.
  7. Dans la même fenêtre choisissez un répertoire local de travail et le fichier de configuration.
  8. pensez à cocher la case “démarrer ce service automatiquement au démarrage du système”

Pour la première fois j’ai du cliquer sur “Démarrer” après avoir validé la fenêtre.

Voilà, la synchro est en route. Mais le document Word fourni indique qu’il faut s’assurer de la résolution NetBios des noms. Donc avoir un serveur Wins ou gérer un fichier lmhosts. Le fichier lmhost est conseillé car il ne sera à gérer que sur le serveur qui assure la synchronisation.

Le fichier lmhosts à configurer est dans le dossier c:\windows\system32\drivers\etc  (svr1.domaine.com sera interrogé en tant que SRV1 en netbios donc…  il faudra ajouter 10.0.0.1 SRV1 dans votre lmhosts)

La seule documentation satisfaisante que j’ai trouvée est le fichier Word inclus dans le téléchargement Microsoft. Sinon il y a une explication très détaillée du fonctionnement de la fonction “libre/occupé” d’Exchange sur le blog de l’équipe exchange : http://msexchangeteam.com/archive/2006/08/04/428597.aspx ou encore ici : http://www.msexchange.org/tutorials/FreeBusy-Folders-Exchange-Server-2003-Depth.html

Encodage des sujets des emails

Lorsqu’on envoi un email via nos applications “maison”, il arrive incroyablement souvent que l’encodage du sujet soit laissé de coté. CodeIgniter n’échappe pas à la règle.
Des antispam comme spamassassin pénalisent fortement ce genre de courrier.

La RFC 2047 indique comment doit être encodé un sujet d’email. C’est assez simple, ça utilise le même encodage que les url – en php la fonction urlencode() peut donc être utilisée – à l’exception des caractères = qui remplacent les caractères % habituels et des espaces qui n’ont pas à être remplacés par des +

Spamassassin pénalise également les emails qui contiennent plusieurs fois l’indication de l’encodage, bien que la rfc l’autorise. Nous allons donc indiquer une bonne fois pour toute en début et ne plus le mentionner. Donc le sujet doit commencer par =?UTF-8?Q?

Une fonction PHP qui fait tout cela est mb_encode_mimeheader() :

Et voila, nos emails seront beaucoup mieux notés par les messageries qui utilisent Spamassassin comme antispam et nous aurons la satisfaction de respecter les normes internet.

Défaut du SPF

A première vue le système SPF est un moyen efficace de lutter contre le spam: on indique (via les DNS) quels sont les serveurs autorisés à envoyer un email pour un domaine donné.
Par exemple, on indique que seul smtp.company.com et smtp2.company.com sont autorisés à envoyer du courrier en @company.com via la ligne suivante ajoutée dans le DNS gérant company.com :

company.com descriptive text "v=spf1 a:smtp.company.com a:smtp2.company.com ~all"

Par exemple, Gmail gère très bien le SPF, on le voit via cette ligne dans les entêtes emails lorsqu’on y envoie un email :

mx.google.com; spf=softfail (google.com: domain of transitioning chris@company.com
does not designate 213.251.138.179 as permitted sender)

ou

mx.google.com; spf=pass (google.com: domain of chris@company.com
designates 12.123.21.80 as permitted sender) smtp.mail=chris@company.com

Aujourd’hui je me suis rendu compte que GMail considère comme échoué le teste SPF si on envoi vers une email qui n’est qu’une redirection (si courant dans le monde des PME).
Donc si j’envoie un courrier à chris@gonzofamily.com , comme c’est une redirection OVH vers mon email gmail, gmail pense que le courrier provient d’OVH. Le serveur mail de ce dernier n’est pas autorisé dans la ligne SPF pour le domaine @company.com, le test échoue.

Et voila comment j’augmente mes chances de voir mon email considéré comme indésirable alors qu’au départ je croyais bien faire.

Une solution semble de ne plus utiliser l’option disant que seuls ces serveurs sont autorisés à émettre du courrier pour ce domaine, mais nous perdons alors un des meilleurs moyens de lutter contre le spam. J’ai du donc remplacer

v=spf1 a:smtp.company.com a:smtp2.company.com ~all

par

v=spf1 v=spf1 a:smtp.company.com a:smtp2.company.com ?all

J’imagine qu’alors nos emails provenant de smtp.company.com sont considérés comme légitimes plus facilement, mais que s’ils proviennent d’autre part ce n’est pas pénalisant.

PS du 22/06/2008 : pour en savoir plus sur le fonctionnement d’SPF cette url est vraiment complète : http://www.openspf.org/SPF_Record_Syntax