Der Befehl compareattr() prüft Attribute/Systemvariablen auf einen zu definierenden Vergleichswert.
Dieser Befehl vergleicht den Inhalt einer Variablen (attribute) mit Hilfe eines Vergleichsoperators (operator) mit einem angegebenen Wert (value)..
Aufbau des Befehls
compareattr('attribute','operator','value');
Rückgabewert
positiv |
bei zutreffender Bedingung |
negativ |
bei nicht zutreffender Bedingung |
Parameter
attribute
Mögliche Werte:
•connect_from |
gibt die IP-Adresse des Systems aus, von welcher eine E-Mail an die Appliance übergeben wurde. |
•SENDER |
gibt den Envelope Sender einer E-Mail aus.
|
•use_lfm |
erkennt das Verwenden von LFT, auch wenn keine Header/Subject Tags verwendet werden und die Schwellwerte greifen |
•unsafe_lfm |
erkennt das Verwenden des LFT-Plain-Modus |
Beim Vergleich von Variablen ist darauf zu achten, dass diese ohne dem üblicherweise vorangestellten «$» eingegeben werden muss. |
operator
Mögliche Werte:
•equal |
vergleicht auf Gleichheit eines Ausdrucks (String) |
•match |
prüft auf das Zutreffen eines regulären Ausdrucks (case insensitive!) |
value
Wert gegen den verglichen werden soll.
Beispiel 1
Zeile |
Code |
|---|---|
01 |
if (compareattr('connect_from','equal','172.16.161.1')) { |
02 |
log(1,'Message comes from 172.16.161.1'); |
03 |
} |
Erklärung
Dieses Beispiel prüft, ob die zu verarbeitende E-Mail von einem bestimmten E-Mail Server (mit der IP-Adresse 172.16.161.1) kommt. Dabei wird die Systemvariable connect_from ausgewertet (Zeile 01).
Kommt die E-Mail von besagtem Server, so wird ein entsprechender Log-Eintrag erzeugt (Zeile 02).
Beispiel 2
Zeile |
Code |
|---|---|
01 |
if (compareattr('connect_from','match','172\.16\.161\.[1-4]')) { |
02 |
log(1,'Message comes from 172.16.161.1-4'); |
03 |
} |
Erklärung
Dieses Beispiel prüft, ob die zu verarbeitende E-Mail von einem E-Mail Server mit einer IP Adresse aus dem Bereich von 172.16.161.1 bis 172.16.161.4 kommt. Dabei wird die Systemvariable connect_from ausgewertet (Zeile 01).
Kommt die E-Mail von besagtem Server, so wird ein entsprechender Log-Eintrag erzeugt (Zeile 02).
Beispiel 3
Zeile |
Code |
|---|---|
01 |
if (compareattr('SENDER','equal','<>')) { |
02 |
log(1,'Message has empty envelope sender'); |
03 |
} |
Erklärung
Dieses Beispiel prüft, ob bei der zu verarbeitenden E-Mail der Absender im Envelope leer ist. Dabei wird die Systemvariable SENDER ausgewertet (Zeile 01).
Ist der Absender im Envelope leer, so wird ein entsprechender Log-Eintrag erzeugt (Zeile 02).
Beispiel 4
Zeile |
Code |
|---|---|
01 |
if (compareattr('use_lfm','equal','1')) { |
02 |
log(1,'Message is LFT'); |
03 |
if (compareattr('unsafe_lfm','equal','1')) { |
04 |
log(1,'LFT Plain mode is used'); |
05 |
} else { |
06 |
log(1,'LFT Secure mode is used'); |
07 |
} |
08 |
} else { |
09 |
log(1,'No LFT message'); |
10 |
} |
Erklärung
Dieses Beispiel prüft, ob die zu verarbeitende E-Mail eine LFT Nachricht ist (Zeile 01). Falls nicht, wird eine entsprechende Nachricht ausgegeben (Zeile 09), andernfalls wird zunächst eine entsprechende Log Nachricht ausgegeben (Zeile 02) und weiterhin geprüft, ob der LFT Plain Modus verwendet wird (Zeile 03). Wenn dem so ist, wird ein entsprechender Log Eintrag erzeugt (Zeile 04), andernfalls wird die Log Meldung ausgegeben, dass der Secure Modus verwendet wird (Zeile 06).

