Exchange NDR, unzustellbar Benachrichtigungen für den Postmaster

Eine Exchange NDR (Non delivery report) kennt eigentlich fast jeder Emailadministrator/Postmaster und auch User. Eher bekannt als die ungeliebten Mails von diversen Absendern: Mailer-Daemon, Postmaster, Microsoft Exchange etc., mit dem Betreff der eben gesendeten Mail und vorangestelltem: „Unzustellbar:“, „undelivery“ und so weiter. Was will der Postmaster/Emailadministrator mit den Exchange NDRs, wie bei jedem anderen Service der produktiv genutzt wird, sollte man sich Fehler anschauen und gegebenfalls beheben. Microsoft vertritt zwar die Ansicht, erst einschalten wenn es Probleme gibt, wer aber ernsthaft Mailsysteme administriert, kann sich jetzt wohl das schmunzeln nicht verkneifen. Das gehört dazu, auch wenn bei einem korrekt konfigurierten Mailserver die NDR-Mails  zu 95% vom User der diesen nutzt verursacht werden. Spätestens wenn der eigene Mailserver, mit einem Anderen, im Loop sich Nachrichten schickt (alles schon erlebt) , wird man froh sein.

Dann mal ans Eingemachte. Der Exchange unterscheidet zwischen internen und externen Absendern. D.h. ich kann mir aussuchen ob ich die Exchange NDRs von meinen Usern oder auch die von externen Versendern haben möchte. Für mich ist das natürlich klar BEIDE 😉 . WICHTIG: Ihr benötigt dafür unbedingt ein Postfach! Das eintragen einer distribution Group funktioniert definitiv nicht! Da gibt es dann nur eine recht unklare Fehlermeldung im Syslog:

Log Name:      Application
Source:        MSExchangeIS Mailbox Store
Date:          05.01.2011 15:35:14
Event ID:      1022
Task Category: Logons
Level:        Error
Keywords:      Classic
User:          N/A
Computer:      server.domain.tpl
Description:
Logon Failure on database „StorageGroup\MailboxDatabase“ – Windows account NT AUTHORITY\NETWORK SERVICE; mailbox /o=kv/ou=exchange administrative group (xxxxxxxffffvvvvv)/cn=recipients/cn=migstub32bz-1e98-1894-server.
Error: 1245

Um die Mails dennoch auf eine Verteilergruppe etc. zu bekommen, ganz nützlich bei mehreren Admins oder weil man nicht extra ein weiteres Postfach abfragen möchte: Mailbox Options –> MailFlow Settings –> delivery options –> Foward to.

Zur Konfiguration:

Kopieren von Unzustellbarkeitsberichten in ein Postfach

– NDRs von internen Absendern

Set-OrganizationConfig -MicrosoftExchangeRecipientReplyRecipient „Mailbox/Postfach“

– NDRs von externen Absendern

Set-TransportConfig -GenerateCopyOfDSNFor 5.4.8, 5.4.6, 5.7.1, 5.7.2

(Das sind die Standard NDRs/SMTP-Fehler, hier könnte selbst weitere hinzufügen: RFC1891, RFC1893)

Noch wichtig, Absenderadresse für die vom eigenen Mailserver generierten NDRs . Eigentlich soll die default „postmaster@default-domain.tpl“ sein. Ein get-TransportServer zeigte dies aber nicht an und gesendet hat er als „Microsoft Exchange“ also lieber:

– externe Postmaster-Adresse

set-TransportServer „mailserver“ -ExternalPostmasterAddress „postmaster@domain.tpl

Zum Schluss will ich noch daran erinnern, dass man als Emailadministrator auch dem deutschen Recht hinsichtlich des Datenschutzes untersteht und auch, sofern vorhanden, die Unternehmensrichtlinien zu beachten hat. Eine unzustellbare Mail von einem User, sollte man auch im Fehlerfalle/Troubleshooting als Anhang keine Beachtung schenken, sondern nur der NDR.

Quellen / weitere Information:

– Microsoft Technet-Forum

* How to Copy NDRs to a Mailbox

– RFC-Editor

* SMTP Service Extension for Delivery Status Notifications

* Enhanced Mail System Status Codes

Rating 3.00 out of 5

VMware, Linux/GNU, X-Windows und die Zwischenablage / clipboard

Ich finds super von VMware mit ESXi/vSphere 4.1 und VMware-Server 2.0.2 mal eben unter X-Windows und installierten VMware Tools die Zwischenablage / Clipboard zu vergessen … wer viele virtuelle Linux-Hosts hat und die VMware-Console nutzt wahrscheinlich noch mehr.  Seit September gibt es endlich eine Lösung von VMware:

per vHost

  1. Log into a vCenter Server system using the vSphere Client and power off the virtual machine.
  2. Select the virtual machine and click the Summary tab.
  3. Click Edit Settings.
  4. Navigate to Options > Advanced > General and click Configuration Parameters.
  5. Click Add Row and type the following values in the Name and Value columns:
    • isolation.tools.copy.disable – false
    • isolation.tools.paste.disable – false

      Note: These options override any settings made in the guest operating system’s VMware Tools control panel.

  6. Click OK to close the Configuration Parameters dialog, and click OK again to close the Virtual Machine Properties dialog.
  7. Power on the virtual machine.

global per Server

  1. In the ESX/ESXi host, open the /etc/vmware/config file using a text editor.
  2. Add these entries to the file:isolation.tools.copy.disable=“FALSE“
    isolation.tools.paste.disable=“FALSE“
  3. Save and close the file. The Copy and Paste options are enabled when the virtual machines restart or resume the next time.

Über die weiteren Auswirkung der Servervariante, habe ich mich nicht weiter informiert!

Quellen:

Copy and Paste option is disabled in vSphere Client 4.1

Rating 3.00 out of 5

Exchange 2007, LCR und die lieben Transaction Logs

Meine Kollegen machten mich darauf aufmerksam das der Plattenplatz vom Backup-Server zuneige geht aber wie konnte das sein? Der Bedarf war für 3 Jahre berechnet, eines davon ist noch nicht mal ganz rum. Nach prüfen der Backuplogs, war der Übeltäter ausgemacht. Unser Exchange verbrauchte nun mittlerweile über das doppelte wie eingeplant. Wir sichern mit Symantec Backup Exec und das Backuplog zeigte mir doppelte Größen der Storage-Groups an, nur bestätige mir das der Exchange weder über die Powershell und schon gar nicht auf Filesystem/Plattenplatz-ebene.  Die Eigenschaften der Transaction-Logs-Platte zeigte dann das Problem. 136 GB Platz und davon 130 GB belegt, jaaaa super, hallte es durch mein Kopf… wie gut das ich damals ein extra Array dafür vorgesehen habe. Also wie war das, erst Konsistenzprüfung, schreiben der Transaction Logs in die DB, erfolgreiches Backup und ddaannnnn löschen der Transaction Logs. A ha aber die Backups liefen ohne Fehler, bis auf das erhöhte Sicherungsvolumen durch die Transaction Logs. Na dann noch mal das Event Log durchgesehen. Finde ich doch folgende „Info“, ja Info kein Gelb, kein Rot, nur ein blaues „i“:

Log Name:      Application
Source:        ESE
Date:          20.09.2010 22:12:03
Event ID:      225
Task Category: ShadowCopy
Level:        Information
Keywords:      Classic
User:          N/A
Computer:     host.domain.tld
Description:
MSExchangeIS (3776) StorageGroup_xxx: No log files can be truncated.

Ja geil -_- *brech* danke für die INFO! Erst mal schieb ich es auf Symantec und  freue mich jetzt schon auf die nette eigentlich nicht deutsch sprechende Support-Tussi aus Ost-Aaaaa ach ich lasse es einfach. Also dann mal nen Backup mit Bordmitteln, das kann dauern bei der Summe der Logs und der schnellen Konsistenzprüfung mit eseutil + 280 GB weg sichern. Stunden später … gleiches Ergebnis arg! Hmmm… wir setzen LCR (Local Continuous Replication) ein, nur ist der Suspending da der iSCSI-Storage nicht ausreichte, neee wa!? Datum der ältesten Transaction Logs mit der letzten Replikation verglichen, oh man! Darüber gibt es dann nicht mal ne Info! Sorry aber bei so was könnt ich …., schlimm genug das die eigene Blödheit das Ding zu laufen lässt aber das der Exchange überhaupt keine Anstalten macht zu warnen, sonst brüllen die M$-Server wegen jeden Scheiß. LCR disabled und noch mal Windows Backup laufen lassen, Stunden später:

Log Name:      Application
Source:        ESE
Date:          24.09.2010 18:35:17
Event ID:      224
Task Category: ShadowCopy
Level:        Information
Keywords:      Classic
User:          N/A
Computer:     server.domain.tld
Description:
MSExchangeIS (3756) StorageGroup_xxx: Deleting log files E:\StorageGroup_xxx\E0200008471.log to E:\StorageGroup_xxx\E0200016B61.log.

Ich liebe es….

Rating 3.00 out of 5

Exchange 2007: Abwesenheitsassistent / out of facility (OOF) definiert als Message Disposition Notification

Über den OOF und  seinen Einsatz, will ich mich jetzt hier nicht äußern. Da sollten die Meinung der User und der Administratoren stark auseinander driften. 😉 Solltet Ihr das Phänomen haben, dass nicht alle Benachrichtigungen ankommen, tja… da wurde wohl geschraubt. Ab Exchange 2007 sind OOF-Mail’s als MDN (Message Disposition Notification) spezifiziert und somit in der Gruppe Übermittlungsnachrichten, also by Design :S . Ich habe nur nichts darüber bei M$ finden können, ob es wohl angekündigt wurde…. in den MS-Foren findet man zumindest ein paar Aussagen aber ich habe die immer gern vom Hersteller.

MDN ist nach RFC mit envelope From <> definiert, also leer:

The envelope sender address (i.e., SMTP MAIL FROM) of the MDN MUST be null (<>), specifying that no Delivery Status Notification messages or other messages indicating successful or unsuccessful delivery are to be sent in response to an MDN.

Mit dem ganzen Spamtheater, versucht sich natürlich jeder irgendwie zu helfen. So fiel mir eine Bounce-Mail auf:

Ihre Nachricht hat einige oder alle Empfänger nicht erreicht.

Betreff:    Abwesend: xxyy
Gesendet am:    02.02.2010 08:00

Folgende Empfänger konnten nicht erreicht werden:

user@domain.de am 02.02.2010 08:00
Diese Nachricht hat das E-Mail-System des Empfängers erreicht, die Übermittlung der Nachricht wurde jedoch verweigert. Versuchen Sie nochmals, diese Nachricht zu senden. Wenn die Übermittlung erneut fehlschlägt, wenden Sie sich an den Systemadministrator.
< externersmtp.domain.de #5.2.0 SMTP; 550-Bounce is not valid for (user@domain.de). (ID:550:2:6>

Satz mit X, über die Konfig von diesem SMTP, will ich hier kein Wort verlieren. Man kann jetzt rumschrauben mit Transportrichtlienen etc., ob das Ergebnis zufrieden stellt…

Somit können die „Ich bin nicht da“-Nachrichten, nicht nur ungelesen im Empfänger-Spam-Ordner landen, sondern auch gar nicht vom Empfänger-SMTP angenommen werden. Dumme Sache das….

Quellen:

– Microsoft Technet-Forum

E2K7SP1 Out of office replies have no sender name

– Microsoft Technet

Understanding Recipient Resolution

– RFC-Editor

An Extensible Message Format for Message Disposition Notifications

Rating 3.00 out of 5

Exchange 2007 und E-Mail-Disclaimer via Transportrule, wenn da nicht die 8192 lange XMLRULE wäre

Ich bin schon erstaunt, wie ausgereift dieses Produkt von MS nach 3 Jahren ist. Bin ich doch tatsächlich der Meinung gewesen nach Ex 2000 und 2003 wird alles besser…. nun ja scheinbar kann ich mich definitiv irren. Diese Meinung werden wieder viele mit mir nicht teilen aber das müssen Sie auch nicht. Mir reichen die neuen Bissspuren in meiner Tastatur von den letzten Wochen. Es hat sich auch gezeigt, das viele Sachen einfach in einem TestLab nicht auftreten, bzw. auftreten können. Einige dieser Probleme bekommt Ihr von mir brühwarm auf den Teller die nächsten Tage.

Zum Thema:

Seit 2007 sind Unternehmen nach dem „Gesetz über elektronische Handelsregister und Genossenschaftsregister sowie das Unternehmensregister“ verpflichtet Ihre Emails mit Firmendaten zu versehen. Wie, wann, was und warum lest bitte hier:  Geschäftsbriefe per E-Mail: Vorsicht, Abmahnfalle. Auf unserem alten Exchange 2000 haben wir das mit einem Tool von einem der vielen Drittanbieter gelöst. Eventskins mit VB oder C# war mir dann doch zu aufwendig 😉 Der Exchange 2007 verspricht da schon mit Boardmitteln Abhilfe „Transportrule„, in einigen Quellen wird da immer von rudimentären Funktionen gesprochen und lieber auf Tools von Drittanbietern verwiesen. Tja nun weiß auch warum O_o.

Unsere Anforderung an eine E-Mail-Disclaimer-Funktion und seine Konfigurationsmöglichkeiten waren recht klar und einfach, nichts was sich mit einem Powershell-Script nicht lösen lässt.

Anforderung:

– automatsiche Aktualisierung des Disclaimers bei neuen oder geänderten Usern (Cronjob)

– Selektion

* User einer bestimmten OU

* User einer bestimmten Firma (AD-Company)

– verschieden Disclaimer-Texte die in einer Textdatei editiert werden können

– unterschiedliche Ausschlusskriterien für den Disclaimer

Kurz eben in New-Transportrule, Set-Transportrule, Transportregelprädikate und Aktionen von Transportregeln eingelesen und los. Es hilft hier sich die GUI vorher mal anzuschauen und zu testen, man kann dann via „get“ die konfigurierten Eigenschaften abfragen und steigt etwas schneller durch 😉

Exchange-Verwaltungskonsole: Organisationskonfiguration –> Hub-Transport –> Transportregeln

Exchange-Verwaltungskonsole (mmc) --> Transportregel

Userselektion:

$user = get-user -OrganizationalUnit $ou | where {$_.RecipientType -eq ‚UserMailbox‘} | where {((($_.Company -eq „$Schreibweise1“) -or ($_.Company -eq „$Schreibweise2“) -or ($_.Company -eq „“)))} | get-mailbox

Hier bediene ich mich einfach der cmdlets get-user und get-mailbox, pipe diese über die Selektionskriterien und in das get-mailbox cmdlet. So stelle ich sicher, nur User zu bekommen die ein Mailaccount besitzen.

Dann werden die Object-Arrays für die Regel gesetzt:

$Condition1 = Get-TransportRulePredicate From # von Personen
$Condition1.Addresses=$user # hier meine selektierten User
$Condition2 = Get-TransportRulePredicate SentToScope # an Benutzer innerhalb oder außerhalb der Organisation gesendet
$Condition2.Scope = „NotInOrganization“ # außerhalb
$Exception1 = Get-TransportRulePredicate SubjectOrBodyContains # Ausschlusskriterium: enthält im Betreff oder Text
$Exception1.Words = @((„Ausschlusstext“)) # Ausschlusswert
$Action1 = Get-TransportRuleAction ApplyDisclaimer # Disclaimer anfügen
$Action1.Text= „$dctext“ # Text des Disclaimer

Set-TransportRule -Name $Disclaimer -Condition @($Condition1, $Condition2) -Exception @($Exception1) -Action @($Action1) -Identity $Disclaimer -ErrorVariable „errort“

Da wir mehrer Disclaimer brauchen, habe ich diesen Part in eine Funktion gepackt und rufe diese mit Werten aus einem Array in der config-section des Scriptes auf. Ab mit dem Script in eine Cronjob alle 10 Minuten und fertig. Mehrere hundert Euro gespart für ein extra Tool!

Das hat wunderbar funktioniert,  Ihr ahnt es schon oder? 🙂 Nun die Kollegen migrierten fleißig User und damit wuchs die Anzahl der zugewiesen User in der Transportrule an. Als ich routinemäßig die Event-Logs kontrolliert, spuckte mein Script doch Fehler aus und das die Transportrule nicht geupdatet werden könne O_o??? Rein ins Error-Log…. a ha:

Set-TransportRule : RuleXml ist zu lang. Die maximal zulässige Länge beträgt 8192, die tatsächliche Länge ist 8252.

Wa??? Google angeschmissen:

Transport Rules Maximum Size (Exchange 2007)

Na ganz toll! Wie lange ist das schon bekannt, ich glaub es nicht! Ich werde ganz sicher keinen eigenen Transport-Agent schreiben. Kommt mir irgendwie bekannt vor, was war da gleich mit EventSkins? Nun jeder würde sagen: „Mach halt ein call auf“. Ja würde ich gern, nur gibt es bei den tollen Open-Verträgen ein nicht klar kommuniziertes Soll an Umsatz, was erbracht werden muss damit man in den Genuss von Support kommt (21500 Euro). Frechheit und wir haben auch noch eine Subscription. Was für ein Glück das ich mit Open Source Software keine Berührungsängste habe und auch schon länger im Unix/Linx-Bereich arbeite. Diese Erfahrung wird nämlich meine nächsten Investitionsentscheidung maßgeblich beeinflussen!

Zur Lösung:

Nun gut wenn die Regel zu groß wird, machen wir Sie kleiner. Wenn die User das Problem sind, wechseln wir zu „von einem Mitglied der Verteilerliste“. Also lege ich pro Disclaimer eine Verteilergruppe an und passe mein Script an ohne Funktionen zu verlieren:

$user = get-user -OrganizationalUnit $ou | where {$_.RecipientType -eq ‚UserMailbox‘} | where {((($_.Company -eq „$Schreibweise1“) -or ($_.Company -eq „$Schreibweise2“) -or ($_.Company -eq „“)))} | get-mailbox | Sort Name

$group = Get-DistributionGroup $Verteilergruppe # Disclaimer-VerteilerGruppe
$groupm = Get-DistributionGroupMember $Verteilergruppe | Sort Name # User die in der Gruppe schon enthalten sind.

$ngroupm = Compare-Object $user $groupm -property Name -includeequal | where {$_.SideIndicator -eq „<=“} # Vergleichen und selektieren welcher User nach den Kriterien noch nicht in der Gruppe enthalten ist

$ngroupm | % {Add-DistributionGroupMember -Identity $Verteilergruppe -Member $_.name -ErrorVariable ead} # User hinzufügen

$rgroupm = Compare-Object $user $groupm -property Name -includeequal | where {$_.SideIndicator -eq „=>“} # Vergleichen wer in der Gruppe ist aber nicht mehr zu den Selektionskriterien passt (Userumzug etc.)

$rgroupm | % {Remove-DistributionGroupMember -Identity $dgn -Member $_.name -ErrorVariable erd} # User aus der Gruppe entfernen

$Condition1 = Get-TransportRulePredicate FromMemberOf  # geandert in von einem Mitglied der Verteilerliste
$Condition1.Addresses = $group # Achtung hier reicht nicht der Plain-Text-Name! In der Variable muss sich das Object befinden.
$Condition2 = Get-TransportRulePredicate SentToScope
$Condition2.Scope = „NotInOrganization“
$Exception1 = Get-TransportRulePredicate SubjectOrBodyContains
$Exception1.Words = @((„Ausschlusstext“))
$Action1 = Get-TransportRuleAction ApplyDisclaimer
$Action1.Text= „$dctext“

set-TransportRule -Name $trn -Condition @($Condition1, $Condition2) -Exception @($Exception1) -Action @($Action1) -Identity $trn -ErrorVariable „ste“

Damit ist die Funktion des E-Mail-Disclaimer wieder hergestellt aber wie lange? 5 Disclaimer benötigen wir, einer ist zurzeit angelegt. Ich bin gespannt ob für alle 5 in Länge 8192 platz ist O_o.

Das vollständig Script, was sich via Variabeln konfigurieren lässt und als Cronjob eingebunden werden kann, gibt es auf Anfrage.

Noch einen Tipp, solltet Ihr ebenso das cmdlet compare-object benutzen, 2 Sachen. Keiner der zu vergleichenden Variabeln darf leer sein und sortiert Ihr den Inhalt nicht, ist das Ergbniss nicht zu gebrauchen!

Quellen:

– Tecchannel

Geschäftsbriefe per E-Mail: Vorsicht, Abmahnfalle

– Microsoft

Transportrule, New-Transportrule, Set-Transportrule, Transportregelprädikate, Aktionen von Transportregeln, get-user, get-mailbox

– Microsoft Technet-Forum

Transport Rules Maximum Size (Exchange 2007)

Geschäftsbriefe per E-Mail: Vorsicht, Abmahnfalle

Rating 3.00 out of 5

Windows 2008 Server, DNS und Root-Server / Stammhinweise entfernen

Es gibt mehrere Gründe seinen DNS-Server im LAN ohne Zugriff ins Internet zu betreiben. Von – es ist einfach nicht notwendig da Http/Ftp/Pop3…-Proxy – bis zur Security. Jeder DNS-Server ist aber im Standard konfiguriert Root-Server zu befragen, wenn er selbst die Anfrage nicht beantworten kann (Weiterleitungen werden sofort für nicht beantwortbare Fragen benutzt, es werden keine Root-Server kontaktiert) . Im ersten Moment ist da jetzt nichts schlimmes daran, wenn er diese Server nicht erreicht aber dennoch kann es sich sehr unangenehm bemerkbar machen.

Ich habe mich nach einem MySQL-Upgrade auf 5.1.x gewundert, das ich mit einem MySQL-Client via TCP/Ip über 20 Sekunden brauchte eine Verbindung aufzubauen. „Reverse Lookup“ war hier das Zauberwort. MySQL wird nicht der einzige Service sein der sowas macht.

Das Problem liegt im Timeout der DNS-Anfrage.

(nslookup)

> www.heise.de
Server:  dns.firma.local
Address:  192.168.1.1

DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Zeitüberschreitung bei Anforderung an dns.firma.local.

Das dauert, je nach dem wie diverse Services versuchen erneut anzufragen, so kann es nette Delays geben.

Lösung: Der Verweis auf die Root-Server muss gelöscht werden.

Unter den Eigenschaften des DNS-Servers in der MMC gibt es so gar einen Reiter Stammhinweise, wo die Root-Servereinträge sich bearbeiten lassen. Nur leider hilft ein löschen nicht wirklich. Löscht man dort alle Einträge raus, versucht er nicht mehr die Root-Server zu erreichen. Startet man den Services allerdings neu, hab ich das gleiche Problem obwohl die Einträge nach wie vor nicht im Reiter zu sehen sind. Fragt mich…Bug oder Feature?

Nun gibt es zwei Möglichkeiten. A die Datei CACHE.DNS im Verzeichnis x:\Windows\System32\dns umzubenennen oder B die Root-Server aus dieser Datei zu löschen.

Möglichkeit A hinterlässt etwas unschöne Spuren im Syslog:

Ereignistyp: Fehler
Ereignisquelle: DNS
Ereigniskategorie: Keine
Ereignis-ID: 1000
Datum:  23.03.2010
Zeit:  15:22:34
Benutzer:  Nicht zutreffend
Computer: dns.firma.local
Beschreibung:
Der DNS-Server konnte die Datei „dns\cache.dns“ nicht öffnen. Stellen Sie sicher, dass die Datei im Verzeichnis „%SystemRoot%\System32\Dns“ vorhanden ist und dass sie gültige Daten enthält. Die Ereignisdaten enthalten den Fehlercode.
Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

So bin ich für Lösung B(der Aufbau der CACHE.DNS ist selbsterklärend und alle NICHT auskommentierten Zeilen mit „;“  sind zu löschen oder mit einem „;“ zu versehen). Sollte der DNS mal spinnen hat es, wer auch immer, etwas leichter bei der Fehlersuche. Hier verbleibt nur eine Warnung im Syslog zurück:

Ereignistyp: Warnung
Ereignisquelle: DNS
Ereigniskategorie: Keine
Ereignis-ID: 706
Datum:  23.03.2010
Zeit:  15:25:17
Benutzer:  Nicht zutreffend
Computer: dns.firma.local
Beschreibung:
Der DNS-Server verfügt über keinen Cache- oder einen anderen Datenbankeintrag für Stammnamenserver.
Entweder muss die Datei mit den Stammhinweisen (cache.dns) oder Active Directory mindestens einen Eintrag für die Namenserverressource enthalten, die einen Stamm-DNS-Server anzeigt sowie einen entsprechenden Eintrag für die Hostressource für diesen Stamm-DNS-Server. Andernfalls kann sich der DNS-Server beim Starten keine Verbindung mit dem Stamm-DNS-Server herstellen und deswegen keine Abfragen zu Namen außerhalb der eigenen Autorisierungszonen beantworten. Zur Behebung dieses Problems verwenden Sie die DNS-Konsole, um die Serverstammhinweise zu aktualisieren. Weitere Informationen hierzu finden Sie in der Onlinehilfe.
Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

Das Ergebnis bleibt allerdings gleich.

(nslookup)

> www.heise.de
Server:  dns.firma.local
Address:  192.168.1.1

*** www.heise.de wurde von dns.firma.local nicht gefunden: Server failed.

Via nslookup ist der Geschwindigkeitsunterschied schon gut zu merken.

Rating 3.00 out of 5

Debian 5 "Lenny", SSH Terminal via Putty und Umlaute.

Da ich es mir nie merken kann, im Putty speichern und fertig, und die Seite auch immer ewig nicht finde. Schreibe ich es eben in meinem eigenen Blog nieder 😉

Fürs Protokoll, ich weiß, Linux auf Deutsch selber schuld….

Problem: Debian 5 „Lenny“, locale auf DE_UTF-8 und SSH via Putty

Ergebnis: z.B. Dselect

Debian »dselect« Paketverwaltungs-Frontend Version 1.13.26 (i386).
* 0. [Z]ugriff   Zugriffsmethode auswählen.
1. [E]rneuern  Liste der verfügbaren Pakete erneuern, falls möglich.
2. [A]uswähle Auswahl der für Ihr System gewünschten Pakete treffen.
3. [I]nstall.  Gewünschte Pakete installieren und aktualisieren.
4. Kon[f]ig.   Alle unkonfigurierten Pakete konfigurieren.
5. [L]öschen  Nicht gewünschte Software löschen.
6. [B]eenden   Dselect beenden.
Bewegen Sie sich mit ^P, ^N, Pfeiltasten, Anfangsbuchstaben oder Ziffern;
Drücken Sie <Eingabe> zur Bestätigung.   ^L zeichnet den Bildschirm neu.

Lösung: Putty richtig einstellen

1.) Window –> Translation

Character set translation on received data = „UTF-8“

Adjust how PuTTY handles line drawing characters = „Use Unicode line drawing code points“

2.) Connection –> Data

Terminal-type string =“linux“

Fertig –>

Debian »dselect« Paketverwaltungs-Frontend Version 1.13.26 (i386).
* 0. [Z]ugriff   Zugriffsmethode auswählen.
1. [E]rneuern  Liste der verfügbaren Pakete erneuern, falls möglich.
2. [A]uswähle Auswahl der für Ihr System gewünschten Pakete treffen.
3. [I]nstall.  Gewünschte Pakete installieren und aktualisieren.
4. Kon[f]ig.   Alle unkonfigurierten Pakete konfigurieren.
5. [L]öschen  Nicht gewünschte Software löschen.
6. [B]eenden   Dselect beenden.
Bewegen Sie sich mit ^P, ^N, Pfeiltasten, Anfangsbuchstaben oder Ziffern;
Drücken Sie <Eingabe> zur Bestätigung.   ^L zeichnet den Bildschirm neu.

Quellen:

Lustige Zeichen mit Putty und SSH vermeiden

Programm:

PuTTY

Rating 3.00 out of 5

Microsoft Exchange Server und ESMTP-Verb XEXCH50

Montag morgen, nicht nur das mir das We. mehr als in den Knochen sitzt, ich hab auch schlechte Laune weil die Woche anfängt. Da spinnt auch noch der Exchange 2000 bei der Zustellung von Mails zum neuen Exchange 2007. Wir migrieren im Moment unsere Infrastruktur und haben uns dafür entschieden das lieber sukzessiv zu machen. Also müssen auch beide Exchange parallel laufen. Nur kurz, jeder Exchange ist relay für unsere Emaildomains, darauf gehe ich jetzt aber nicht weiter ein, das ist ein extra Artikel wert ;).  Gut dann schauen wir mal warum die Mühle spinnt, die Queue vom Exchange 2000 läuft voll und er hat mir schon 1231241 Infomails verpasst, das er die Mails daraus nicht los wird … *stöhn* Also warum nimmt der Exchange 2007 die Mails nicht an, die Empfänger stimmen und sind auf Ihm inkl. Mailbox vorhanden. Dann lasst uns mal in die Logs vom Receive Connector schaun, jaaaa das schaltet man auf jeden fall an, wenn man ernsthaft einen Exchange betreiben will!

—snip—

MAIL FROM:<Administrator@domain.de>,
08CC8051F528AE2D;2010-02-22T06:58:06.986Z;5,receiving message
250 2.1.0 Sender OK,
RCPT TO:<user@domain.de>,
250 2.1.5 Recipient OK,
XEXCH50 2816 2,
504 5.7.1 Not authorized,
BDAT 1033 LAST,
250 2.6.0 <AA5E574DE49@exchange2000.domain.de> Queued mail for delivery,
RSET,
250 2.0.0 Resetting,
MAIL FROM:<Administrator@domain.de>,
08CC8051F528AE2D;2010-02-22T06:58:06.986Z;6,receiving message
250 2.1.0 Sender OK,
RCPT TO:<User2@domain.de>,
250 2.1.5 Recipient OK,
XEXCH50 2160 2,
„421 4.7.0 Too many errors on this connection, closing transmission channel“,
Local

—snap—

äähh wa? „Queued mail for delivery“ dann nen RSET und weiter im Text, der dann irgendwann mit „421 4.7.0 Too many errors on this connection, closing transmission channel“ endet? Oh man, ich liebe es! Er hatte bis dahin immer zuverlässig zugestellt aber warum jetzt nicht mehr? Was mir ins Auge stach und jeder Sendmailbesitzer die Augenbraun nach oben ziehen + Kopfschütteln lässt: XEXCH50 xxxx x, 504 5.7.1 Not authorized, BDAT 1033 LAST. Hmm… mal schauen was der versendende Exchange 2000 zu dieser verkorksten Kommunikation noch zu lesen hat. Nach durchsicht des virtuellen SMTP Logs und hochschrauben der Diagnoseprotokolle war ich genauso schlau wie vorher, außer Gegenstelle setzt zurück, war nichts weiter zu entnehmen.  Ab Exchange 2007 SP 2 lässt sich ein Glück via MMC die Diagnoseprotokolleigenschaften wieder einschalten ohne 300 Powershell cmdlets ab zu setzen, gesagt getan. Freude freude keinen einzigen Ton über eine resette Verbindung weil zu viele Fehler, sorry Microsoft das geht gar nicht! Na ja, dann mal mit XEXCH50 hab dich lieb an Google und Technet gestürzt…A HA. *stöhn*

„XEXCH50 ist die Exchange-Erweiterung SMTP, mit der bestimmte Nachrichteneigenschaften wie Umschlagnachricht und Empfänger weiterleiten.“

http://support.microsoft.com/kb/812455

In Kombination mit einer nicht erfolgreichen Authentifizierung kracht er beim erreichen seines Fehlercounter zusammen und setzt die Verbindung komplett zurück.

Es gibt jetzt 2,5 Möglichkeiten. 1,5 EXECH50 auf einen der beiden Server abschalten, so fern man nicht mehrere Exchange in einer Domain oder Exchange-Organisationen hat!!! Die 2, raus finden warum er sich nicht authentifizieren kann. Da wir nur migrieren hatte ich eigentlich auf Authentifizierungen verzichtet und Ihm anonymous durchgehen lassen, ja okay steinigt mich ruhig. Also warum meckert er???

Ich hab mich dann für Lösung 1,5 entschlossen, allerdings auf dem neuen Exchange 2007. Er wird der einzig überlebende Exchange in der Firma für die weiteren 3 Jahre bleiben und seine Smarthosts/MTA’s sind reine Unix-Services die können damit eh nichts anfangen. Also global auf dem Exchange 2007 weg mit XEXCH50:

set-transportconfig -Xexch50Enable $FALSE oder 0

Na und schwubs ist die Queue leer -_- , inklusive der halbe Montag. So was lieb ich ja! Ich hab nun auch inzwischen rausgefunden was mit der Authentifizierung los war. Wir hatten die Vertrauensstellung der Domainen abgeschaltet weil wir sie ja „eigentlich“ nicht brauchten… so viel zum Thema anonymous! Mal sehen was mich erwartet wenn ich nach der Migration die UNIX-MTA’s via SSL-Zertifikat am Connector authentifizieren will, das schreit nach nicht funktionieren und wieder *stöhn*

Hier noch der Artikel zum deaktivieren der XEXCH50-Erweiterungen auf Exchange 2000 und 2003

http://support.microsoft.com/kb/818222/de

Wer sich jetzt noch fragt, was zum Geier ist BDAT… sehr gut… und Sie sind ein guter Emailadministrator – weiter so!

http://www.faqs.org/rfcs/rfc3030.html

The first extension enables a SMTP client and server to negotiate the use of an alternative to the DATA command, called „BDAT“, for efficiently sending large MIME (Multipurpose Internet Mail Extensions) messages. The second extension takes advantage of the BDAT command to permit the negotiated sending of MIME messages that employ the binary transfer encoding.  Read more: http://www.faqs.org/rfcs/rfc3030.html#ixzz0gGXthQV7

Greetz

Christian

Rating 3.00 out of 5

Powershell-Scripte mal anders starten…

An was man sich nicht alles mal eben länger aufhalten kann *Zähneknirsch*. Für Zabbix fix ein Powershell-Script geschrieben um den Memory Workingsets für die liebe Store.exe vom Exchange 2007 abzufragen.  Das dauerte genau 2 Minuten, nun nur noch via Zabbix-Agent das Script ausführen.

Das Problem, ein Leerzeichen im Pfad, wo das Script liegt.

X:\Program Files\ordner\script.ps1

Ich mache es kurz, nach längerem suchen:

http://technet.microsoft.com/en-us/library/ee176949.aspx

  • Incidentally, the -noexit parameter must immediately follow the call to the PowerShell executable. Otherwise the parameter will be ignored and the window will close anyway.
  • C:\Scripts\Test.ps1, the path to the script file.

What if the path to the script file contains blank spaces? In that case you need to do the ampersand trick we showed you earlier; in addition, you need to enclose the script path in single quote marks, like so:

powershell.exe -noexit &'c:\my scripts\test.ps1'

Strange, but true!

Ja grünau!

Ein powershell /? in der CMD bringt noch folgendes ans Licht(ungefähr 10 weitere Minuten später):

Wenn der Wert von „Command“ eine Zeichenfolge ist, muss „Command“ der
letzte Parameter im Befehl sein, da alle nach dem Befehl eingegebenen
Zeichen als Befehlsargumente interpretiert werden.    Schreiben Sie eine
Zeichenfolge zum Ausführen eines Windows PowerShell-Befehls im folgenden
Format:

wobei die Anführungszeichen eine Zeichenfolge angeben und der
Aufrufoperator (&) die Ausführung des Befehls veranlasst.

Fassen wir zusammen, Aufrufoperator + ampersand trick, sieht bei mir so aus –> powershell.exe „& ‚x:\Program Files\script.ps1′“ dann klappt es auch mit dem Nachbarn!

Für Powershell V2 Nutzer, herzlichen Glückwunsch, bitte benutzen Sie die Option -File O_o.

Rating 3.00 out of 5

Windows 7, Virtual Pc oder besser XP-Mode. Wir migrieren mal eine Admin-Maschine.

Tach auch,

wie es der Titel schon sagt. Vor 4 Wochen saß ich in meinem Büro und war recht neidisch auf meine Kollegen mit Ihrem neuen Windows 7 schnickschnack. Mein Xp lief super stabil und performant und eigentlich gab es nichts zu meckern. Die Maschine war komplett mit allem eingerichtet was ich für meine tägliche Arbeit brauchte aber nach 7 Jahren *langweilig*. Der Admin braucht halt auch ab und zu was Neues zum spielen. Vista habe ich gutem Gewissen und unter der Beachtung der selbst aufgestellten Regel: Windows OS und super neues alles ist anders Betriebssystem – FINGER VON WEG, links liegen lassen. Die Regel hat nach diversen Erfahrungen mit Windows ME, Windows 2000 auch hier wieder gehalten was Sie verspricht… Für all die jetzt den Kopf schütteln, ja ja rein subjektiv natürlich. Obwohl ich die 2te Regel brechen würde: Niemals produktiv vor dem Service Pack 1, ich musste einfach  :). Vor allem 64bit bei 4 GB Arbeitsspeicher, bin ich doch daheim schon länger auf Xp 64. Allerdings war da ein Problem, wir migrieren dato im Unternehmen die Infrastruktur.  Von Windows 2000 Server inkl. Exchange 2000 auf Windows 2008/Exchange 2007 mit allem Drum und Dran. Nachdem ich mich mit um die unwichtigen Sachen wie: DNS, DHCP, Exchange, Backup und Monitoring kümmere. Brauchte ich meine alte Maschine weiterhin in der alten Domain, mit dem gängigen OS und den Programmversionen mit denen die User die Services dort nutzen (z.B. Outlook 2000). Da war doch was mit kostenlosen XP-Mode ab Windows 7 Professional, google angeschmissen und A-HA. Na alles klar, Image gemacht, reingeprügelt und fertig! Dachte ich …. natürlich installiere ich mein Rechner nicht neu, bevor das nicht getestet war. Damit begann ein Leidensweg der einige Stunden gekostet hat aber wie heißt es doch in der IT so schön:“ jeht nich, jibs nich. So ist es, aller Widrigkeiten zu trotz: 127,5 GB Platten-Größenbeschränkung bei Virtual PC/Xp-Mode; native AHCI XP-Installation, es läuft! Wie das jetzt hier:

1. Das liebe AHCI und der Standard-IDE-Festpalltencontroller

Wer AHCI nicht nutzt oder sein System nicht auf eine AHCI aktiviert Platte installiert hat, kann zu Punkt 2 gehen. Ja Glück gehabt!

Ich geb es zu, ich bin ein anonymer Performancejunkie. So ist es ganz klar, neue Platte und natürlich im BIOS unter IDE/SATA-Controller: AHCI aktiviert.  Native Command Queuing hier ist Name Programm und lässt die Admins Augen funkeln, sortierte Hardwarebefehle für optimalen Plattenzugriff *träum*. Wenn man eine Xp-CD inkl. SP3 hat kein Problem beim installieren, nur emuliert der Virtual PC von MS kein AHCI, warum auch. Na da gibt es einen netten Blue Screen beim Versuch die vhd zu booten! Was muss also getan werden, Standard IDE-Controller vor dem Image ziehen auf der XP-Maschine installieren. Das einfacher gesagt als getan. Ich habe es letztendlich nur mit den Registryschlüsseln geschafft O_o  Microsoft Knowledge Base Artikel 314082. Jeder der mal ein Mainboard tauschen musste und nicht neuinstallieren konnte/wollte, wird es gerade durchzucken. 🙂

2. Image erstellen des bestehenden Systems

Dicken Dank an Sysinternals Jungs: great Work! So brauchen wir kein Acronis oder andere „nicht“ kostenlose Image-Software. Disk2VHD ist hier das Zauberwort. Bringt alles mit was wir für ein Image brauchen.

Tut Euch einen gefallen und hakt Fix up HAL for Virtual PC an. 90  Prozent der Rechner dürften Hyper Threading haben oder einen Mehrkern-CPU, Virtual-PC stellt aber nur ein Single-Maschine zur Verfügung: „blue Screen“

3. Virtuelle Plattengröße und Image resizen

Das Problem bei dieser ganzen blocklevel basierten Clone-Technik, selbst wenn ich nur 1 Partition ins Image kopier, die gesamten Infos des Datenträgers kommen mit. So hatte ich ein 10Gb großes Image, was virtuell immer noch eine 500GB Platte war. Virtual Pc weist einen freundlich darauf hin, das beim ihm leider bei einer Plattengröße von 127,5 GB schluss ist. Das Problem hat mich echt Nerven gekostet! Hier war der erste positive Admin-Gummipunkt für Windows 7: Start –> rechte Maustaste auf Computer –> verwalten –> Datenträgerverwaltung –> rechte Maustaste Virtuelle Festplatte anfügen O_O aber HALLO da hat mal einer mitgedacht! Gesagt getan:

Jetzt die leere nicht benötigte Partition löschen.

Sollte Euch jetzt auffallen das auf der Partition viel zu viel freier Platz ist, auch hier hat bei MS einer mitgedacht. CMD als Amdin und diskpart gestartet.

Noch vorweg, defragmentieren bekommt hier eine ganz andere Bedeutung, mehr platz frei machen.

DISKPART> list vdisk

DISKPART> select vdisk file=“…vhd“

DISKPART>  select volume

DISKPART> shrink desired=(Größe in MB)

Mit shrink ohne Angabe wird auf das Minimum reduziert. Mit der Option querymax könnt Ihr das vorher abfragen. ich rate Euch immer 1 oder 2 Gig Luft zu lassen!VHD unmounten und weiter im Text. Es sei nur erwähnt, Ihr dürft die VHD natürlich nicht read only mounten.

So jetzt geht es daran die VHD zu resizen, da dieses immer noch 500Gb groß ist. Das machen wir mit dem Programm VHD Resizer von VMTOOLKIT

Die „New Size“ muss immer etwas größer sein als die angegeben minimal Größe

Nach dem erfolgreichen resizen. Braucht Ihr nur das Image dem virtuellen Pc zuweisen und und starten. TATA Ihr solltet nun Eure Admin-Maschine unter Windows 7 im Virtual PC/Xp-Mode am laufen haben.

Wunder Euch nicht über die neue Zwangskativierung, da der Hardwaretausch für Xp wohl mehr als nur 3 Komponenten beinhaltet hat 😉

Ich bin jetzt glücklich, hab  mein Windows 7 auf meinem Abreitsrechner in der neuen Windows 2008 Domain und meine alte Xp-Installation virtualisiert laufen und kann so gar optimal die Migration voran treiben 🙂

[Update]

Für diejenigen von Euch die Handarbeit scheuen oder einfach keine Zeit haben.  Die Firma Vizioncore stellt Ihren vConverter SC zum freien Download zur Verfügung, damit geht es etwas schneller. Ich habe aber auch Maschinen gesehen, die nicht booten wollten nach dem Transfer. Hier noch ein Artikel aus der C’T, der sich mit der Thematik beschäftigt: AB in die VM

Greetz

Christian

Rating 4.50 out of 5