Emails für bestimmte Empfängerdomains über Smarthost senden

Ich hatte kürzlich einen Fall, bei dem die Emaildienste eines großen Betriebssystemherstellers alle Mails von einer Seite abgelehnt haben, die einige Zeit vorher von einem auf einen anderen Server umgezogen ist.

Da „nur“ die IP des neuen Servers in der Blockierliste eingetragen war, war es weiterhin möglich, Mails vom alten Server zu senden. Da es nun etwas dringend war, dass die Emails wieder an die Kunden des Mailproviders gehen und eine Löschung von der Blockierliste zu lange dauert, hab ich mich dazu entschieden, die Mails erst einmal über den alten Server zu senden. Dieser agiert somit als sog. Smarthost.

Damit aber die IP-Reputation für andere Mailprovider nicht sinkt, sollten nur die Mails über den Smarthost gesendet werden, die tatsächlich an die betroffenen Domains gehen.

Um exim entsprechend zu konfigurieren, habe ich folgende Konfigurationsdatei angelegt (Wichtig: Split-Files-Mode aktivieren)

/etc/exim4/conf.d/router/049_exim4_config_specific_mail_via_smarthost

mit diesem Inhalt:

static_route:
    driver = manualroute
    transport = remote_smtp
    route_data = ${lookup{$domain}partial-lsearch{/etc/exim4/specific_relays}}

Dazu dann eine Datei, in der den Domains ein Smarthost zugewiesen wird:

/etc/exim4/specific_relays

Inhalt:

xyz.com: smarthost.example.com
xyz.de: smarthost.example.com

Zu guter Letzt noch auf dem Smarthost die Annahme vom Absendeserver erlauben. Das lässt sich bei Debian-basierten Distributionen einfach über einen der Dialoge der Konfiguration erledigen (Dialog Relay-Host):

dpkg-reconfigure exim4-config

Smarthost-Konfiguration
Smarthost-Konfiguration

Dann auf beiden Systemen den Exim-Dienst neu laden:

service exim4 reload

Idee:

https://forums.cpanel.net/threads/forward-certain-domain-emails-to-smart-host.136325/#post-899191

Thumbnails mit mogrify erstellen ohne die Köpfe abzuschneiden

Ich hatte kürzlich wieder das Problem, dass ich Thumbnails für eine Bildergalerie erzeugen wollte. Ich finde dabei quadratische Thumbnails am besten, da dann die Übersicht über das Album am gleichmäßigsten aussieht. Blöd ist dabei nur, dass man entweder einen Rahmen um die Bilder hat oder die Bilder beschnitten werden. Ich ziehe hier aber letztere Variante vor, da die Details dann besser zu sehen sind. Ich setzte dann meist ein Lightbox-Plugin ein, dann sieht man die ausgeblendeten Teile ja im Vollbild wenn man drauf klickt.

Um die Thumbnails zu generieren hat sich für mich folgende Methode als sinnvoll erwiesen:

Bei Landscape-Fotos wird einfach ein Quadrat mit der Seitenlänge gleich der Höhe des Fotos verwendet. Rechts und Links wird zu gleichen Teilen abgeschnitten.

Im Landscape-Format klappt das Ganze wunderbar
Im Landscape-Format klappt das Ganze wunderbar

So weit so gut. Wendet man nun das selbe Verfahren bei Portraitfotos an und schneidet oben und unten zu gleichen Teilen ab, hat man oft das Problem, dass die Köpfe oben abgeschnitten werden.

Während das gleiche Vorgehen im Portrait-Format bei Arny wunderbar funktioniert, stößt das spätestens bei mir an seine Grenzen
Während das gleiche Vorgehen im Portrait-Format bei Arny wunderbar funktioniert, stößt das spätestens bei mir an seine Grenzen

Deshalb verwende ich normalerweise immer den oberen Teil des Bildes. Dies hat zwar den Nachteil, dass Bilder, bei denen die Gesichter tatsächlich im unteren Bereich sind, gar nicht mehr zu sehen sind, zumindest bei meinen Fotos war dies aber nur bei einem verschwindend geringen Teil der Bilder der Fall. Sehr viel öfter hatte ich oben angeschnittene Köpfe.

Wenn immer nur der obere Teil benutzt wird, klappts besser.
Wenn immer nur der obere Teil benutzt wird, klappts besser.

Um dieses Verfahren nun schnell auf eine große Menge von Bildern anzuwenden, verwende mogrify mit folgendem Aufruf:

mogrify -auto-orient -thumbnail 145x145^ -gravity North -extent 145x145 *.jpg

Achtung: mogrify überschreibt die Originaldateien! Deshalb am besten vorher in ein separates Thumbnail-Verzeichnis kopieren. Alternativ kann man die gleichen Parameter auch mit convert verwenden, dann muss man aber sowohl Ein- als auch Ausgabedatei angeben.

Da ich das Ganze auch öfter mal in PHP-Code verbaue, habe ich mir eine kleine Klassenbibliothek geschrieben, die neben normalen Vergrößerungs-Operationen auch das Cropping mit Fokus auf den oberen Teil unterstützt:

PHP Resize Lib

Weiter verbessern ließe sich das Ganze höchstens noch, wenn man eine Gesichtserkennung nutzt. Dann kann man gezielt den Bildausschnitt verwenden, auf denen die (meisten) Köpfe zu sehen sind.