Kleine und große Linux AHAs
Beiträge getaggt mit MS Exchange Linux Mail Migration
MailMig Teil 3: Datengrundlage erstellen
27. Aug
Die nötigen Daten zu diesem Projekt befinden sich zu einem großen Teil im Exchange Server. Nur wie kommt man an diese Daten, um vernünftig mit ihnen arbeiten zu können? Ich habe einen Weg gefunden, der mir recht gut gefällt.
Zuerst ein Export! Aber wie?
Die Daten aus dem Exchange Server zu exportieren mag man sich einfacher vorstellen, als es möglich ist. Also meine erste Vermutung war: Im Verzeichnisbaum mit der rechten Maustaste klicken, exportieren, alles, speichern unter – fertig. Naja, das wäre zu einfach gewesen. Es gibt zwar diesen Menüeintrag, allerdings lässt sich damit nur die aktuelle Listenansicht exportieren. In dieser sind jedoch nicht alle Informationen enthalten.
Nach einiger Suche hatte ich einen neuen Freund gefunden: csvde.exe. Soll wohl sowas bedeuten wie “CSV Direcory Export”. Nutzt man diesen Befehl ohne Eingrenzung und unter einem Account mit den nötigen Privilegien, bekommt man eine .csv Datei mit “allen” Inhalten des Directories. Das sind mal gerade >300 Spalten
Ich habe den Befehl so ausgeführt:
csvde -u -f listing.csv
In listing.csv sind damit alle Informationen enthalten.
Wie nun damit arbeiten?
Diese Datei ist extrem unübersichtlich und auch mit Skripten in der Form nicht gut zu nutzen. Darum habe ich mir diese Datei in eine MySQL Datenbank eingelesen (macht bei einer größeren Anzahl Mailboxen wirklich Sinn). Sind die Daten in der Datenbank kann man recht einfach mit Perl andocken, Views bauen oder auch mit Grafischen Frontends Abfragen erstellen.
Damit die Datenbank ohne größeren Aufwand während der Migrationsphase aktualisiert werden kann, habe ich mir ein Script erstellt welches die .csv Datei in die Datenbank einliest, Views erstellt und über ein Perl Programm auch schon beispielsweise eine Tabelle mit den aktuellen Verteilerlisten erstellt (verteiler eMailadresse/Zieladressen). Das ganze sieht dann so aus:
#!/bin/bash
#
# Script zur Erstellung der Datenbanktabellen und Import der Daten aus einem
# Exchange Directory Dump.
#
# Ronny Becker, 08.2010
#
#
# Prerequisites:
# - Datenbank gal muss vorhanden sein
# - der Benutzer gal (pw: gal) muss Vollzugriff auf die Datenbank haben
#
# Tabelle anlegen
echo "drop table if exists pure_import; create table pure_import (
DN LONGTEXT,objectClass LONGTEXT,distinguishedName LONGTEXT,
instanceType LONGTEXT,whenCreated LONGTEXT,whenChanged LONGTEXT,
subRefs LONGTEXT,uSNCreated LONGTEXT,dSASignature LONGTEXT,
repsTo LONGTEXT,repsFrom LONGTEXT,uSNChanged LONGTEXT,
name LONGTEXT,objectGUID LONGTEXT,replUpToDateVector LONGTEXT,
creationTime LONGTEXT,forceLogoff LONGTEXT,lockoutDuration LONGTEXT,
lockOutObservationWindow LONGTEXT,lockoutThreshold LONGTEXT,maxPwdAge LONGTEXT,
minPwdAge LONGTEXT,minPwdLength LONGTEXT,modifiedCountAtLastProm LONGTEXT,
nextRid LONGTEXT,pwdProperties LONGTEXT,pwdHistoryLength LONGTEXT,
objectSid LONGTEXT,serverState LONGTEXT,uASCompat LONGTEXT,
modifiedCount LONGTEXT,auditingPolicy LONGTEXT,nTMixedDomain LONGTEXT,
rIDManagerReference LONGTEXT,fSMORoleOwner LONGTEXT,systemFlags LONGTEXT,
wellKnownObjects LONGTEXT,objectCategory LONGTEXT,isCriticalSystemObject LONGTEXT,
gPLink LONGTEXT,gPOptions LONGTEXT,masteredBy LONGTEXT,
msDSMachineAccountQuota LONGTEXT,msDSBehaviorVersion LONGTEXT,
msDSPerUserTrustQuota LONGTEXT,msDSAllUsersTrustQuota LONGTEXT,
msDSPerUserTrustTombstonesQuota LONGTEXT,msDsmasteredBy LONGTEXT,
msDSIsDomainFor LONGTEXT,dc LONGTEXT,ou LONGTEXT,description LONGTEXT,
showInAdvancedViewOnly LONGTEXT,dSCorePropagationData LONGTEXT,cn LONGTEXT,
memberOf LONGTEXT,userAccountControl LONGTEXT,badPwdCount LONGTEXT,codePage LONGTEXT,
countryCode LONGTEXT,badPasswordTime LONGTEXT,lastLogoff LONGTEXT,lastLogon LONGTEXT,
localPolicyFlags LONGTEXT,pwdLastSet LONGTEXT,primaryGroupID LONGTEXT,accountExpires LONGTEXT,
logonCount LONGTEXT,sAMAccountName LONGTEXT,sAMAccountType LONGTEXT,operatingSystem LONGTEXT,
operatingSystemVersion LONGTEXT,operatingSystemServicePack LONGTEXT,dNSHostName LONGTEXT,
rIDSetReferences LONGTEXT,servicePrincipalName LONGTEXT,userCertificate LONGTEXT,
displayName LONGTEXT,serverReferenceBL LONGTEXT,frsComputerReferenceBL LONGTEXT,
rIDAvailablePool LONGTEXT,msDSTombstoneQuotaFactor LONGTEXT,flags LONGTEXT,
versionNumber LONGTEXT,gPCFunctionalityVersion LONGTEXT,gPCFileSysPath LONGTEXT,
gPCMachineExtensionNames LONGTEXT,gPCUserExtensionNames LONGTEXT,ipsecName LONGTEXT,
ipsecID LONGTEXT,ipsecDataType LONGTEXT,ipsecData LONGTEXT,ipsecISAKMPReference LONGTEXT,
ipsecNFAReference LONGTEXT,ipsecOwnersReference LONGTEXT,ipsecNegotiationPolicyReference LONGTEXT,
ipsecFilterReference LONGTEXT,iPSECNegotiationPolicyType LONGTEXT,iPSECNegotiationPolicyAction LONGTEXT,
userParameters LONGTEXT,adminCount LONGTEXT,lockoutTime LONGTEXT,msNPAllowDialin LONGTEXT,
members LONGTEXT,groupType LONGTEXT,revision LONGTEXT,logonHours LONGTEXT,comments LONGTEXT,
lastSetTime LONGTEXT,priorSetTime LONGTEXT,fRSReplicaSetType LONGTEXT,fRSVersionGUID LONGTEXT,
fRSFileFilter LONGTEXT,fRSReplicaSetGUID LONGTEXT,serverReference LONGTEXT,frsComputerReference LONGTEXT,
fRSMemberReferenceBL LONGTEXT,fRSWorkingPath LONGTEXT,fRSRootPath LONGTEXT,fRSStagingPath LONGTEXT,
fRSMemberReference LONGTEXT,rIDAllocationPool LONGTEXT,rIDPreviousAllocationPool LONGTEXT,
rIDUsedPool LONGTEXT,rIDNextRID LONGTEXT,dNSProperty LONGTEXT,sn LONGTEXT,givenName LONGTEXT,
homeMTA LONGTEXT,proxyAddresses LONGTEXT,homeMDB LONGTEXT,mDBUseDefaults LONGTEXT,
mailNickname LONGTEXT,legacyExchangeDN LONGTEXT,userPrincipalName LONGTEXT,textEncodedORAddress LONGTEXT,
mail LONGTEXT,msExchHomeServerName LONGTEXT,msExchALObjectVersion LONGTEXT,msExchHideFromAddressLists LONGTEXT,
msExchMailboxSecurityDescriptor LONGTEXT,msExchUserAccountControl LONGTEXT,msExchMailboxGuid LONGTEXT,
msExchPoliciesIncluded LONGTEXT,showInAddressBook LONGTEXT,mSMQSignCertificates LONGTEXT,
mSMQDigests LONGTEXT,objectVersion LONGTEXT,sIDHistory LONGTEXT,managedBy LONGTEXT,
reportToOriginator LONGTEXT,deletedItemFlags LONGTEXT,garbageCollPeriod LONGTEXT,replicatedObjectVersion LONGTEXT,
replicationSignature LONGTEXT,msExchADCGlobalNames LONGTEXT,msExchMasterAccountSid LONGTEXT,dLMemDefault LONGTEXT,
msExchPoliciesExcluded LONGTEXT,reportToOwner LONGTEXT,hideDLMembership LONGTEXT,oOFReplyToOriginator LONGTEXT,
l LONGTEXT,telephoneNumber LONGTEXT,department LONGTEXT,mAPIRecipient LONGTEXT,employeeNumber LONGTEXT,
employeeID LONGTEXT,uid LONGTEXT,manager LONGTEXT,BsiSysteme LONGTEXT,uidNumber LONGTEXT,gidNumber LONGTEXT,
unixHomeDirectory LONGTEXT,loginShell LONGTEXT,assistant LONGTEXT,securityProtocol LONGTEXT,
deliverAndRedirect LONGTEXT,autoReplyMessage LONGTEXT,extensionAttribute10 LONGTEXT,protocolSettings LONGTEXT,
physicalDeliveryOfficeName LONGTEXT,targetAddress LONGTEXT,internetEncoding LONGTEXT,title LONGTEXT,
msExchPreviousAccountSid LONGTEXT,altRecipient LONGTEXT,info LONGTEXT,facsimileTelephoneNumber LONGTEXT,
publicDelegates LONGTEXT,altRecipientBL LONGTEXT,profilePath LONGTEXT,publicDelegatesBL LONGTEXT,
displayNamePrintable LONGTEXT,msExchExpansionServerName LONGTEXT,msExchUnmergedAttsPt LONGTEXT,
deliveryMechanism LONGTEXT,msExchPFTreeType LONGTEXT,delivContLength LONGTEXT,msExchRequireAuthToSendTo LONGTEXT,
securityIdentifier LONGTEXT,trustDirection LONGTEXT,trustPartner LONGTEXT,trustPosixOffset LONGTEXT,
trustType LONGTEXT,trustAttributes LONGTEXT,flatName LONGTEXT,scriptPath LONGTEXT,roomNumber LONGTEXT,
homeDirectory LONGTEXT,homeDrive LONGTEXT,msRADIUSCallbackNumber LONGTEXT,msRADIUSServiceType LONGTEXT,
userWorkstations LONGTEXT,directReports LONGTEXT,msRASSavedCallbackNumber LONGTEXT,company LONGTEXT,
submissionContLength LONGTEXT,managedObjects LONGTEXT,operatorCount LONGTEXT,lastKnownParent LONGTEXT,
mDBOverHardQuotaLimit LONGTEXT,pager LONGTEXT,otherFacsimileTelephoneNumber LONGTEXT,location LONGTEXT,
gPCWQLFilter LONGTEXT,mSDSCreatorSID LONGTEXT,msRRASAttribute LONGTEXT,unixUserPassword LONGTEXT,
initials LONGTEXT,adminDisplayName LONGTEXT,keywords LONGTEXT,serviceClassName LONGTEXT,serviceBindingInformation LONGTEXT,
serviceDNSName LONGTEXT,serviceDNSNameType LONGTEXT,categoryId LONGTEXT,localizedDescription LONGTEXT,extensionName LONGTEXT,
lastUpdateSequence LONGTEXT,appSchemaVersion LONGTEXT,msiScriptPath LONGTEXT,cOMClassID LONGTEXT,localeID LONGTEXT,
machineArchitecture LONGTEXT,packageType LONGTEXT,packageName LONGTEXT,packageFlags LONGTEXT,versionNumberHi LONGTEXT,
versionNumberLo LONGTEXT,msiFileList LONGTEXT,upgradeProductCode LONGTEXT,productCode LONGTEXT,msiScriptName LONGTEXT,
installUiLevel LONGTEXT,canUpgradeScript LONGTEXT,mSMQSites LONGTEXT,mSMQServiceType LONGTEXT,mSMQOSType LONGTEXT,
mSMQEncryptKey LONGTEXT,mSMQSignKey LONGTEXT,mSMQDependentClientServices LONGTEXT,mSMQRoutingServices LONGTEXT,
mSMQDsServices LONGTEXT,url LONGTEXT,fileExtPriority LONGTEXT,postalCode LONGTEXT,streetAddress LONGTEXT,
msDSSupportedEncryptionTypes LONGTEXT,gecos LONGTEXT,dnsRecord LONGTEXT,uNCName LONGTEXT,serverName LONGTEXT,
portName LONGTEXT,driverName LONGTEXT,priority LONGTEXT,printStartTime LONGTEXT,printEndTime LONGTEXT,printBinNames LONGTEXT,
printMaxResolutionSupported LONGTEXT,printOrientationsSupported LONGTEXT,printCollate LONGTEXT,printColor LONGTEXT,
printShareName LONGTEXT,printSpooling LONGTEXT,printKeepPrintedJobs LONGTEXT,driverVersion LONGTEXT,printMaxXExtent LONGTEXT,
printMaxYExtent LONGTEXT,printMinXExtent LONGTEXT,printMinYExtent LONGTEXT,printStaplingSupported LONGTEXT,printMediaReady LONGTEXT,
printNumberUp LONGTEXT,printMediaSupported LONGTEXT,printerName LONGTEXT,shortServerName LONGTEXT,printDuplexSupported LONGTEXT,
printMemory LONGTEXT,printRateUnit LONGTEXT,printLanguage LONGTEXT,printRate LONGTEXT,printPagesPerMinute LONGTEXT,
adminDescription LONGTEXT,schemaVersion LONGTEXT,msSFU30KeyAttributes LONGTEXT,msSFU30FieldSeparator LONGTEXT,
msSFU30IntraFieldSeparator LONGTEXT,msSFU30SearchAttributes LONGTEXT,msSFU30ResultAttributes LONGTEXT,msSFU30MapFilter LONGTEXT,
msSFU30MasterServerName LONGTEXT,msSFU30OrderNumber LONGTEXT,msSFU30Domains LONGTEXT);" | mysql -u gal -pgal gal
# Daten einlesen
echo "LOAD DATA INFILE 'listing.csv' INTO TABLE pure_import FIELDS TERMINATED BY ',' ENCLOSED BY '\"' IGNORE 1 LINES;" | mysql -u gal -pgal gal
# views einrichten
echo "CREATE VIEW `gal`.`aliases_with_mail` AS SELECT DN,members,mail FROM `gal`.`pure_import` where mail <> '' and members <> '' and members LIKE 'CN%';" | mysql -u gal -pgal gal
echo "CREATE VIEW `gal`.`AddBook` AS select `gal`.`pure_import`.`sn` AS `sn`,`gal`.`pure_import`.`givenName` AS `givenName`,`gal`.`pure_import`.`mail` AS `mail`,`gal`.`pure_import`.`l` AS `l`,`gal`.`pure_import`.`telephoneNumber` AS `telephoneNumber`,`gal`.`pure_import`.`department` AS `department`,`gal`.`pure_import`.`description` AS `description`,`gal`.`pure_import`.`showInAddressBook` AS `showInAddressBook` from `gal`.`pure_import` where (`gal`.`pure_import`.`showInAddressBook` like '%Globale Adressliste%')" | mysql -u gal -pgal gal
# tabelle mit verteilerlisten anlegen
echo "drop table if exists lists; create table lists (mail TEXT,recipient LONGTEXT);" | mysql -u gal -pgal gal
# Tabelle mit Verteilerlisten fuellen
./gal_create_table_sub.pl
Hier nun noch das sub-Script:
#!/usr/bin/perl
# Listing
@MAILADDS=`echo "select mail,members from aliases_with_mail" | mysql -N -u gal -pgal gal`;
$count_all=$#MAILADDS + 1;
$counter=1;
foreach $line (@MAILADDS) {
chomp($line);
$all_rec="";
($mail,$members)=split("\t",$line);
@each_member=split(";",$members);
foreach $member (@each_member) {
$tmp_add=`echo "select mail from tabelle1 where DN='$member';" | mysql -N -u gal -pgal gal`;
chomp($tmp_add);
if ( length($tmp_add) != 0 ) {
$all_rec=$all_rec.",".$tmp_add;
}
}
$all_rec =~ s/^,//;
`echo "insert into lists(mail,recipient) values('$mail','$all_rec');" | mysql -N -u gal -pgal gal`;
print "$counter / $count_all\n";
$counter++;
}
MailMig Teil 2: Buchführung – Haben und Soll
16. Aug
Der Exchange “Mailserver”
Der Ausgangspunkt ist ein Microsoft Exchange Server. In unserem Fall ein Exchange 2003 (v5.5). Dieser Server ist so konfiguriert, dass er alle Mails – egal für welche Domain – zuerst einmal annimmt. Bevor nun jemand schreit: Das ist kein Problem, da der Server intern steht und über ein Relay die Mails von Außen zugeschoben bekommt. Der Mailrelay übernimmt dabei die Filterfunktion.
Auf diesem Server befinden sich Postfächer für mehrere Domains, es gibt Globale Adressbücher und natürlich die Standardfunktionen von Outlook – gemeinsame Kalender, Kontakte, Aufgaben, Resourcenplanung und der Zugriff von Außen auf die Daten per IPhone, Webclient ….
Die Anzahl der Postfächer beläuft sich auf ca. 1000 mit einer Gesamtgröße von ca. 1200 GB. Allerdings sind in dieser Größe auch die sogenannten “Öffentlichen Ordner” enthalten, die wir nicht migrieren werden.
Das Licht am Ende des Tunnels
Die Zielgerade ist ein Linux System powered by Ubuntu Server, Postfix, Dovecot und Group-Office. Das System soll sich an offene Standards halten und ohne weitere Lizenzkosten skalierbar sein. Mit den ausgewählten Open-Source Tools sollte das gelingen.
Ubuntu Server
Ubuntu Server wurde von uns ausgewählt, da es auf Debian basiert, allerdings um einiges aktueller ist als – aktuell – Lenny 5.0.5. Beispielsweise ist Dovecot in Debian mit der Version 1.0.15 vertreten – Ubuntu bringt 1.2.9. Für einen Mailserver der aktuelle Features nutzen möchte ist das schon ein Argument. Des Weiteren kann man mit Ubuntu auch Ökonomisch bzw. Betriebswirtschaftlich argumentieren, da man von Canonical als “Hersteller” von Ubuntu Support einkaufen kann. Diese Tatsache macht Ubuntu für Unternehmen die Zertifizierungen einhalten müssen (also extern zertifiziert werden) als kostengünstige Lösung interessant. Ob man nun wirklich einen Supportvertrag abschließt oder nicht ist dabei egal – man könnte, in vielen Fällen reicht das schon.
Postfix
Postfix ist ein extrem schneller und flexibler MTA. Es gibt natürlich auch andere, jedoch ist Postfix sehr gut dokumentiert und recht einfach zu verstehen (wenigstens in den Grundfunktionen). Er ist in allen Linux Distributionen als (Standard)-Paket verfügbar und auch Erweiterungen, wie die Anbindung an MySQL, sind oft bereits in der Distribution enthalten. In unserem Fall ist alles wichtige bei Ubuntu dabei.
Dovecot
Dovecot ist ein IMAP-Server. Er ist mittlerweile weit verbreitet und absolut stabil. Einer seiner Vorzüge ist, dass er sich ganz klar an die Regeln hält und einer der IMAP Server ist, die das IMAP Protokoll am “saubersten” implementiert haben. Die Installation und Konfiguration von Dovecot ist ebenfalls relativ simpel, da für die Grundfunktionen nur wenig Parameter anzupassen sind. Dovecot kann über diverse Plugins erweitert werden. Über die Version 2.x des Servers gibt es auch aktuell einen Artikel im Linux-Magazin.
Group-Office
Ich habe recht lange nach einer Möglichkeit gesucht, die heutzutage quasi Standarddienste eines Mailservers kostengünstig darzustellen. Diese Dienste laufen oft eigentlich unabhängig von den Maildiensten an sich. Group-Office – wie auch die meisten anderen – setzen dabei auf eine Datenbank als Backend und ein Webfrontend für Mail, Kalender, Adressen, Aufgaben usw. Der Unterschied von bspw. OpenXchange zu Group-Office ist, dass es keine Benutzer bezogenen Kosten gibt. Auch für die Anbindung von Outlook, IPhone oder andere Clients werden keine Extra Kosten fällig. Entsprechend der Preisliste von Group-Office muss man für die Pro-Version einen Betrag von zur Zeit 399,- € bezahlen und gut ist. Im Folgejahr werden ~200,- € für die weiteren Updates fällig.
Es gibt auch eine kostenlose Community Version, die allerdings ein paar der überwiegend im Business Bereich notwendigen Fähigkeiten nicht enthält.
Die Gründe für uns auf die Pro-Variante zu gehen liegen gerade in den Schnittstellen zur Synchronisation (SyncML, ActiveSync). Mit diesen Schnittstellen sollte es möglich sein mobile Geräte (IPhone, Androids), aber auch Mailclients wie Outlook oder Thunderbird anzubinden.
Der Hersteller von Group-Office, die Firma Intermesh in Holland, bietet zur Installation unter Debian und Ubuntu ein Repository an. Durch die Nutzung des Repositories ist die Installation sowie die Aktualisierung von GO recht einfach. Das Produkt gibt es seit ca. 2001 und ist aktiv in Entwicklung – als Firma möchte man sich absichern (soweit möglich), damit man nicht in ein System investiert, welches potentiell nicht weiterentwickelt wird. Des Weiteren wird GO beispielsweise von der Polizei in Holland eingesetzt.
MailMig Teil 1: Warum ist die Banane krum? Oder, warum überhaupt migrieren?
11. Aug
Warum überhaupt das ganze??
Naja, also in meiner direkten Situation war es so, dass der Admin des Exchange Servers kündigte. Die Firma – in der es schon längerer Zeit Ambitionen gibt möglichst viel mit Linux / OSS zu betreiben – entschied sich dann keinen Admin für Exchange mehr einzustellen. Die Windows Administration war bereits auf das nötigste heruntergefahren. Die Hauptsysteme laufen bereits auf Linux – bis auf den Mailserver. Der Mailserver unter Exchange war über ca. 10 Jahre gewachsen. Niemand hat sich so richtig damit beschäftigt; kennt sich aus. Nach dem Weggang des Admins reduzierte sich die Administration auf das wirklich notwendigste – man wollte ja auf Linux und eine offene Lösung setzen.
Warum dort überhaupt ein Exchange Server steht, wenn doch alle eigentlich Linux machen möchten? Naja, ich denke weil das doch alles so einfach geht
Viele Firmen – und ich spreche hier nur über Mittelstand – sind in den letzten Jahren gewachsen. Teilweise auch recht stark. Firmen die recht früh erkannt haben, dass die eMail sich zu einem wichtigen Kommunikationsmittel mausert, suchten nach einer einfachen Lösung. Naja, wenn der Windows Admin dann mal schaut, kann er sich einfach mal den Exchange Server herunterladen und innerhalb von kürzester Zeit ist so ein Ding zusammengeklickt und scheint zu funktionieren. Die paar Lizenzen sind ja auch kein Problem. Es brauchen ja nur wenige eine eMailadresse – die Kosten waren überschaubar. Doch dann wurde die eMail immer beliebter. Quasi jeder in einem Unternehmen sollte eine eigene Adresse haben und damit intern und extern kommunizieren können. Es war ja auch so einfach irgendwelche Anweisungen einfach per eMail an “Jeden” zu schicken. Damit war der Informationspflicht genüge getan (wenigstens für einige Bereiche). Jeder Benutzer benötigte eine eigene Lizenz für den Exchange Server. Möchte man den Exchange Fatclient “Outlook” auch nutzen, so wird dafür ebenfalls eine Lizenzgebühr fällig. Je mehr Mitarbeiter eine eMailadresse bekamen, desto mehr Kosten entstanden. Damit konnte ja anfangs niemand rechnen
Ich denke gerade im Mittelstand sind einige Firmen so oder so ähnlich in die Lizenzfalle geraten und würden sich wünschen, dort wieder heraus zu kommen.
Ob die Motivation nun aus einer Situation wie bei mir, aus Überzeugung oder vielleicht aus Sicht der Kostenkalkulation / Lizenzsituation entsteht ist an sich egal. Wenn man migrieren möchte, dann sollte …
- die neue Lösung alle Funktionen bieten, die heute quasi zu Standard gehören (beispielsweise IMAP, SPAMChecks, SSL an der ein oder anderen Stelle, …)
- die neue Lösung Groupware Funktionalitäten bieten (shared Calendar, shared Addressbook, …)
- ein Webinterface mit allen Funktionen sollte zur Verfügung stehen
- die Migration sollte möglichst ohne “viel” Aufwand möglich sein
- die Migration neue/bessere Funktionen bieten, man möchte aber auf nichts verzichten
- die Migration so ablaufen, dass der Benutzer absolut nichts davon merkt
- es keine Lizenzen mehr geben, vor allem nicht per Benutzer
- und zu guter Letzt soll das ganze natürlich performanter laufen als das alte System
Soweit der Wunschzettel für den Nikolaus.
Ob alle oder Teile dieser Punkte überhaupt realistisch sind, sei mal dahin gestellt. Das ein oder andere wird sich in den nächsten Artikeln in Wohlgefallen auflösen.
MailMig: Die Buffetrede
09. Aug
So, da hab ich wohl wieder mal in die vollen gegriffen. Mein Artikel WUUUUAAAAAA!! Oder: Wie migriere ich von MS Exchange zu einem “Mailserver” , der ja eigentlich nur eine Ankündigung sein sollte, ist auf recht großes Interesse gestoßen. Von daher möchte ich versuchen, parallel zu dem realen Projekt, die Dokumentation auf Linux-AHA zu erstellen – quasi Just-In-Time
Man mag vielleicht an diversen Stellen in meinen Artikeln merken, dass das Thema mich ein wenig nervt. Darüber habe ich mir bereits Gedanken gemacht – ich weiß wieso: Wenn man, wie ich, seit ca. 10 Jahren mit Linux arbeitet und auch schon seit ungefähr 7 Jahren auf der Workstation in der Firma ebenfalls ledglich mit Linux arbeitet, dann kann man bei einem solchen Projekt wirklich erschrecken und auch verzweifeln. Man ist es gewöhnt mit Textdateien, LDAP Verzeichnissen oder Datenbanken zu arbeiten, diese Daten zu verändern, anzupassen, Dinge per Script zu erledigen, mit den Informationen aus Programmen (bspw. per Pipe) zu arbeiten und so weiter. Wird man dann vor ein Projekt gestellt, mit dem das – wenigstens auf der zu migrierenden Seite – fast nicht möglich ist, so kann man den Glauben an die Welt verlieren. Naja, jetzt werden einige sagen dass da mittlerweile doch auch so einiges geht; ja, stimmt. Aber dann fängt es an mit der Dokumentation die nur sehr schwierig zu finden ist – auch als Unterschied zu OSS und der Community. Egal. Die Artikelserie wird ab sofort immer mit “MailMig” gekennzeichnet sein und ein Logo hab ich mir auch ausgedacht
Damit wäre also schon mal das wichtigste geklärt
Ich würde mich freuen, wenn hier am Ende eine interessante Artikelreihe entsteht, die anderen hilft zu migrieren und solche Projekte zu stemmen. Bin natürlich immer offen für Erweiterungen, Ratschläge, Ideen und Korrekturen.
PS: Logo made with the Gimp, using Tango icons.




