Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1388 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [RESOLU][Postfix & Exchange][SMTP relay & Recipients]

 

Sujet(s) à lire :
    - [Postfix][SMTP relay][Connexion refused]
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU][Postfix & Exchange][SMTP relay & Recipients]

n°976404
Deroma1
Posté le 09-11-2007 à 09:27:41  profilanswer
 

Bonjour,
 
J'ai réussi à créer un automatisme pour mettre à jour les recipients autorisés pour Postfix sur un serveur Linux / Debian en DMZ, à partir d'un serveur Exchange SBS 2003 en LAN.
 
Pour ceux que ça peut intéresser voici ma solution:
 
Un script VB qui scanne l'arborescence de l'annuaire LDAP d'Active Directory, récupère les Alias de messageries et toutes les adresses emails SMTP associées (script original quelque peu modifié par mes soins).
Pensez à modifier cette ligne Set Container = GetObject("LDAP://OU=xxxxxxxx,DC=xxxxxxxx,DC=xxxxxx" ) en fonction de l'organisation de votre AD.
 

Code :
  1. ' Export all valid recipients (= proxyAddresses) into a
  2. ' file virtual.txt
  3. '
  4. ' Ferdinand Hoffmann & Patrick Koetter
  5. ' 20021100901
  6. ' Shamelessly stolen from
  7. ' http://www.microsoft.com/windows2000/techinfo/ \
  8. ' planning/activedirectory/bulksteps.asp
  9. 'Global variables
  10. Dim Container
  11. Dim OutPutFile
  12. Dim FileSystem
  13. 'Initialize global variables
  14. Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject" )
  15. Set OutPutFile = FileSystem.CreateTextFile("recipients.data", True)
  16. Set Container = GetObject("LDAP://OU=Societe,DC=terre-et-decor,DC=local" )
  17. 'Enumerate Container
  18. EnumerateUsers Container
  19. 'Clean up
  20. OutPutFile.Close
  21. Set FileSystem = Nothing
  22. Set Container = Nothing
  23. WScript.Quit(0)
  24. 'List all Users
  25. Sub EnumerateUsers(Cont)
  26. Dim User
  27. 'Go through all Users and select them
  28. For Each User In Cont
  29.  Select Case LCase(User.Class)
  30.  Case "user", "group"
  31.    'Select all proxyAddresses
  32.    Dim Alias
  33.    If Not IsEmpty(User.proxyAddresses) Then
  34.      For Each Alias in User.proxyAddresses
  35.    If InStr(1,Alias,"smtp",1) > 0 Then
  36.     OutPutFile.WriteLine Alias & "~~" & " " & User.DisplayName
  37.    End If
  38.    Next
  39.    End If
  40.  Case "organizationalunit" , "container"
  41.   EnumerateUsers User
  42.  End Select
  43. Next
  44. End Sub


 
Ensuite je récupère le résultat de ce script que je pousse avec Putty sur le serveur Debian.
 

Code :
  1. pscp -l root -pw xxxxxxx C:\BAT\recipients.data root@gecko:/var/lib/postfix/recipients.data


 
Pensez à modifier xxxxxxx par le mot de passe root, et gecko par le nom de votre passerelle Debian.
 
Puis je lance toujours avec Putty, un script Shell hébergé sur le serveur Exchange  :D  
 

Code :
  1. putty -load gecko -l root -pw xxxxxxxx -m C:\BAT\pushMailRecipients.sh


 
Là aussi pensez à adapter le script
 
Voici le script Shell, il parse simplement le fichier envoyé en supprimant la mention smpt:. Puis il hash le résultat avec postmap pour qu'il soit exploitable par Postfix.
 

Code :
  1. # NE JAMAIS EDITER AVEC LE BLOC NOTE, il intégre des sauts de lignes à l'enregistrement qui
  2. # perturbent le script
  3. awk -F"~~" '{$1=substr($1,6,length($1)); print $1 $2}' /var/lib/postfix/recipients.data > /etc/postfix/relayRecipients
  4. postmap /etc/postfix/relayRecipients
  5. rm /var/lib/postfix/recipients.data
  6. rm /etc/postfix/relayRecipients
  7. exit


 
Il ne me reste qu'à modifier le main.cf de Postfix pour intégrer ces données :
 

Code :
  1. relay_recipient_maps = hash:/etc/postfix/relayRecipients


 
Et voici le bat final schedulé sur le serveur Exchange qui fait le chef d'orchestre de tout ça.
A chaque mise à jour de mes utilisateurs sur Exchange, je suis sur que la passerelle en aura connaissance.
 

Code :
  1. @echo off
  2. exportMailRecipients.vbs
  3. pscp -l root -pw xxxxxx C:\BAT\recipients.data root@gecko:/var/lib/postfix/recipients.data
  4. putty -load gecko -l root -pw xxxxxxx -m C:\BAT\pushMailRecipients.sh
  5. erase recipients.data


 
Bonne journée, Théo

mood
Publicité
Posté le 09-11-2007 à 09:27:41  profilanswer
 

n°1360881
imaneb
Posté le 14-07-2014 à 19:58:22  profilanswer
 

Deroma1, pourriez-vous me dire  svp comment pourrai-je exécuter le script vb  qui scanne l'arborescence de l'annuaire LDAP d'Active Directory :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [RESOLU][Postfix & Exchange][SMTP relay & Recipients]

 

Sujets relatifs
[resolu] Joindre les 2 bouts entre un pc et une virtualbox[Postfix][Spamassassin]
SMTP Authentification - Postfix - Certificat[résolu] nettoyage spam
Les alternatives à Microsoft Exchange arrivent![Resolu] carte son Emu 0404 pci et linux
ebuild non officiel [résolu] gcc-4.3.0_alpha20071109[Résolu] IPtables ne se lance pas
[RESOLU] Neogia sous linux Ubuntu ? 
Plus de sujets relatifs à : [RESOLU][Postfix & Exchange][SMTP relay & Recipients]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR