AllLinksAreSpam |
Top Previous Next |
Beispielsprojekte > HTML- und Text-Parser > AllLinksAreSpam
AllLinksAreSpam beruht auf dem HTMLText-Projekt. Syntaktisch sind sie identisch. Aber es wurde eine simple semantische Aktion eingebaut, die die Mail als Spam klassifiziert, sobald ein Link in ihr gefunden wird. Das macht insofern Sinn, als dass nahezu jede Spammail als Link-Transporteur dient. Wenn man also Links nur in E-Mails zulassen möchte, deren Adressen in der Freundesliste stehen, hat man mit AllLinksAreSpam einen effizienten Spamfilter. Außerdem demonstriert dieses Projekt den Vorteil der HTML-Option gegenüber der Text-Option: in reinen Texten sind oft nicht alle Links enthalten.
Die Aktion erfolgt in der Link-Produktion:
NORMAL_LINK {{m_iResult = -1; }} | "http://www.mydomain.com" | "mailto:"? ( EMAIL {{m_iResult = -1; }} | "myname@mydomain.com" )
NORMAL_LINK ist ein regulärer Ausdruck, der das Muster beschreibt, nach dem die meisten Links aufgebaut sind.
NORMAL_LINK ::= (http://|ftp://)?[^\r\n\t <>"@]+(\.[^\r\n\t <>"@]+)+
EMAIL ist ein regulärer Ausdruck, der das Muster beschreibt, nach dem die meisten E-Mailadressen aufgebaut sind.
EMAIL ::= [\w\.-]+ \// local part @ \ ([\w-]+\.)+ \ // sub domains [a-zA-Z]{2,4} // top level domain
Ein Sonderfall bilden die eigenen Adressen. Bisweilen werden sie von Spammern mit in die Mail kopiert. Aber es kann auch sein, dass die eigenen Adressen darauf hindeuten, dass die Mail eine Antwort von einem Absender ist, den Sie noch nicht in Ihre Freundesliste aufgenommen haben. Es empfiehlt sich für die eigenen Adressen einen regulären Ausdruck zu entwickeln, der nur dann auf die Adresse passt, wenn sie exakt auf die Weise zitiert ist, wie Sie sie in Ihre Mails schreiben. Z.B.: würde der regulärer Ausdruck
MY_EMAIL ::= -+\r?\nmailto:myname@mydomain.com
auf folgende Schreibweise der Adresse passen:
---------------- mailto:myname@mydomain.com
Dir Link-Produktion könnte dann ergänzt werden zu:
NORMAL_LINK {{if(m_iResult != 1) m_iResult = -1; }} | "mailto:"? ( EMAIL {{if(m_iResult != 1) m_iResult = -1; }} | MY_EMAIL {{m_iResult = 1; }} )
|