12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- -- Thanks to https://raw.githubusercontent.com/fatalbanana
- local lua_maps = require 'lua_maps'
- local rspamd_regexp = require 'rspamd_regexp'
- local rspamd_util = require 'rspamd_util'
- local ivm_sendgrid_ids = lua_maps.map_add_from_ucl(
- 'https://www.invaluement.com/spdata/sendgrid-id-dnsbl.txt',
- 'set',
- 'Invaluement Service Provider DNSBL: Sendgrid IDs'
- )
- local ivm_sendgrid_envfromdomains = lua_maps.map_add_from_ucl(
- 'https://www.invaluement.com/spdata/sendgrid-envelopefromdomain-dnsbl.txt',
- 'set',
- 'Invaluement Service Provider DNSBL: Sendgrid envelope domains'
- )
- local cb_id = rspamd_config:register_symbol({
- name = 'IVM_SENDGRID',
- callback = function(task)
- -- Is it Sendgrid?
- local sg_hdr = task:get_header('X-SG-EID')
- if not sg_hdr then return end
- -- Get original envelope from
- local env_from = task:get_from{'smtp', 'orig'}
- if not env_from then return end
- -- Check normalised domain in domains list
- if ivm_sendgrid_envfromdomains and ivm_sendgrid_envfromdomains:get_key(rspamd_util.get_tld(env_from[1].domain)) then
- task:insert_result('IVM_SENDGRID_DOMAIN', 1.0)
- end
- -- Check ID in ID list
- local lp_re = rspamd_regexp.create_cached([[^bounces\+(\d+)-]])
- local res = lp_re:search(env_from[1].user, true, true)
- if not res then return end
- if ivm_sendgrid_ids and ivm_sendgrid_ids:get_key(res[1][2]) then
- task:insert_result('IVM_SENDGRID_ID', 1.0)
- end
- end,
- description = 'Invaluement Service Provider DNSBL: Sendgrid',
- type = 'callback',
- })
- rspamd_config:register_symbol({
- name = 'IVM_SENDGRID_DOMAIN',
- parent = cb_id,
- group = 'ivmspdnsbl',
- score = 8.0,
- type = 'virtual',
- })
- rspamd_config:register_symbol({
- name = 'IVM_SENDGRID_ID',
- parent = cb_id,
- group = 'ivmspdnsbl',
- score = 8.0,
- type = 'virtual',
- })
|