62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- 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',
 | |
| })
 | 
