Mail::SpamAssassin::Plugin::DecodeShortURLs(3pm) | User Contributed Perl Documentation | Mail::SpamAssassin::Plugin::DecodeShortURLs(3pm) |
DecodeShortURLs - Check for shortened URLs
loadplugin Mail::SpamAssassin::Plugin::DecodeShortURLs url_shortener tinyurl.com url_shortener_get bit.ly body HAS_SHORT_URL eval:short_url() describe HAS_SHORT_URL Message has one or more shortened URLs body SHORT_URL_REDIR eval:short_url_redir() describe SHORT_URL_REDIR Message has shortened URL that resulted in a valid redirection body SHORT_URL_CHAINED eval:short_url_chained() describe SHORT_URL_CHAINED Message has shortened URL chained to other shorteners body SHORT_URL_MAXCHAIN eval:short_url_maxchain() describe SHORT_URL_MAXCHAIN Message has shortened URL that causes too many redirections body SHORT_URL_LOOP eval:short_url_loop() describe SHORT_URL_LOOP Message has short URL that loops back to itself body SHORT_URL_200 eval:short_url_code('200') # Can check any non-redirect HTTP code describe SHORT_URL_200 Message has shortened URL returning HTTP 200 body SHORT_URL_404 eval:short_url_code('404') # Can check any non-redirect HTTP code describe SHORT_URL_404 Message has shortened URL returning HTTP 404 uri URI_TINYURL_BLOCKED m,https://tinyurl\.com/app/nospam, describe URI_TINYURL_BLOCKED Message contains a tinyurl that has been disabled due to abuse uri URI_BITLY_BLOCKED m,^https://bitly\.com/a/blocked, describe URI_BITLY_BLOCKED Message contains a bit.ly URL that has been disabled due to abuse
This plugin looks for URLs shortened by a list of URL shortening services. Upon finding a matching URL, plugin will send a HTTP request to the shortening service and retrieve the Location-header which points to the actual shortened URL. It then adds this URL to the list of URIs extracted by SpamAssassin which can then be accessed by uri rules and plugins such as URIDNSBL.
This plugin will follow chained redirections, where a short URL redirects to another short URL. Redirection depth limit can be set with "max_short_url_redirections".
Maximum of "max_short_urls" short URLs are checked in a message (10 by default). Setting it to 0 disables HTTP requests, allowing only short_url() test to work and report found shorteners.
All supported rule types for checking short URLs and redirection status are documented in SYNOPSIS section.
This plugin runs at the check_dnsbl hook (priority -100) so that it may modify the parsed URI list prior to normal uri rules or the URIDNSBL plugin.
Example:
url_shortener tinyurl.com url_shortener .page.link
Example:
url_shortener_get bit.ly
Example: url_shortener_cache_type dbi
For SQLite, the database will be created automatically if it does not already exist, the supplied path and file must be read/writable by the user running spamassassin or spamd.
For MySQL/MariaDB or PostgreSQL, see sql-directory for database table creation clauses.
You will need to have the proper DBI module for your database. For example DBD::SQLite, DBD::mysql, DBD::MariaDB or DBD::Pg.
Minimum required SQLite version is 3.24.0 (available from DBD::SQLite 1.59_01).
Examples:
url_shortener_cache_dsn dbi:SQLite:dbname=/var/lib/spamassassin/DecodeShortURLs.db
See "url_shortener_cache_autoclean" for database cleaning.
Set 0 to disable automatic cleaning and to do it manually.
Setting it to 0 disables HTTP requests, allowing only short_url() test to work and report any found shortener URLs.
Original DecodeShortURLs plugin was developed by Steve Freegard.
2023-04-30 | perl v5.36.0 |