]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix smtp grammar issues
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Apr 2016 16:12:34 +0000 (17:12 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Apr 2016 16:12:34 +0000 (17:12 +0100)
src/libmime/parsers/smtp_addr_parser.c
src/ragel/smtp_address.rl

index 7e5f2581024c119336912e0aad88fbcae5c8017b..d97116faa739232df48bf8c12387ab250fcaa4bc 100644 (file)
@@ -6,640 +6,6 @@
 
 
 #line 9 "src/libmime/parsers/smtp_addr_parser.c"
-static const char _smtp_addr_parser_trans_keys[] = {
-       0, 0, 9, 126, 33, 126, 33, 126, 48, 122, 48, 122, 48, 122, 48, 122,
-       46, 122, 48, 57, 46, 57, 48, 57, 46, 57, 48, 57, 48, 93, 48, 93,
-       93, 93, 46, 57, 46, 46, 46, 57, 46, 46, 46, 122, 46, 122, 48, 122,
-       33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126, 32, 126,
-       33, 126, 33, 126, 33, 126, 48, 122, 46, 122, 48, 122, 48, 122, 48, 122,
-       46, 122, 48, 57, 46, 57, 48, 57, 46, 57, 48, 57, 48, 93, 48, 93,
-       93, 93, 62, 62, 46, 57, 46, 46, 46, 57, 46, 46, 46, 122, 46, 122,
-       48, 122, 33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126,
-       32, 126, 48, 122, 44, 122, 64, 64, 33, 126, 48, 122, 48, 122, 44, 122,
-       64, 64, 33, 126, 48, 122, 9, 122, 9, 32, 9, 32, 9, 32, 9, 32,
-       0
-};
-
-static const char _smtp_addr_parser_key_spans[] = {
-       0, 118, 94, 94, 75, 75, 75, 75,
-       77, 10, 12, 10, 12, 10, 46, 46,
-       1, 12, 1, 12, 1, 77, 77, 75,
-       94, 94, 75, 95, 95, 1, 95, 95,
-       94, 94, 94, 75, 77, 75, 75, 75,
-       77, 10, 12, 10, 12, 10, 46, 46,
-       1, 1, 12, 1, 12, 1, 77, 77,
-       75, 94, 94, 75, 95, 95, 1, 95,
-       95, 75, 79, 1, 94, 75, 75, 79,
-       1, 94, 75, 114, 24, 24, 24, 24
-};
-
-static const short _smtp_addr_parser_index_offsets[] = {
-       0, 0, 119, 214, 309, 385, 461, 537,
-       613, 691, 702, 715, 726, 739, 750, 797,
-       844, 846, 859, 861, 874, 876, 954, 1032,
-       1108, 1203, 1298, 1374, 1470, 1566, 1568, 1664,
-       1760, 1855, 1950, 2045, 2121, 2199, 2275, 2351,
-       2427, 2505, 2516, 2529, 2540, 2553, 2564, 2611,
-       2658, 2660, 2662, 2675, 2677, 2690, 2692, 2770,
-       2848, 2924, 3019, 3114, 3190, 3286, 3382, 3384,
-       3480, 3576, 3652, 3732, 3734, 3829, 3905, 3981,
-       4061, 4063, 4158, 4234, 4349, 4374, 4399, 4424
-};
-
-static const char _smtp_addr_parser_indicies[] = {
-       0, 0, 0, 0, 0, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       0, 2, 3, 2, 2, 2, 2, 2,
-       1, 1, 2, 2, 1, 1, 1, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 1, 1, 4, 2, 1, 2,
-       5, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 1, 1, 1, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 1,
-       6, 1, 6, 6, 6, 6, 6, 1,
-       1, 6, 6, 1, 1, 7, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 1, 1, 1, 6, 1, 6, 8,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 1, 1, 1, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 1, 6,
-       1, 6, 6, 6, 6, 6, 1, 1,
-       6, 6, 1, 1, 1, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       1, 1, 1, 6, 1, 6, 1, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 1, 1, 1, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 6, 6, 6,
-       6, 6, 6, 6, 6, 1, 9, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       1, 1, 1, 1, 1, 1, 1, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 10, 1, 1, 1, 1, 1, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 9, 9, 9, 9, 9, 9, 9,
-       9, 1, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 1, 1, 1, 1,
-       1, 1, 1, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 1, 1, 1,
-       1, 1, 1, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 1, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       1, 1, 1, 1, 1, 1, 1, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 1, 1, 1, 1, 12, 1, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 1, 13, 13, 13, 13, 13, 13,
-       13, 13, 13, 13, 1, 1, 1, 1,
-       1, 1, 1, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 1, 1, 1,
-       1, 15, 1, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 14, 14, 14,
-       14, 14, 14, 14, 14, 1, 16, 1,
-       17, 17, 17, 17, 17, 17, 17, 17,
-       17, 17, 18, 1, 1, 1, 1, 1,
-       1, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 1, 1, 1, 1, 20,
-       1, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 1, 21, 21, 21, 21,
-       21, 21, 21, 21, 21, 21, 1, 22,
-       1, 23, 23, 23, 23, 23, 23, 23,
-       23, 23, 23, 1, 24, 24, 24, 24,
-       24, 24, 24, 24, 24, 24, 1, 25,
-       1, 26, 26, 26, 26, 26, 26, 26,
-       26, 26, 26, 1, 27, 27, 27, 27,
-       27, 27, 27, 27, 27, 27, 1, 28,
-       28, 28, 28, 28, 28, 28, 28, 28,
-       28, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 29, 1, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 29, 1, 29, 1, 25,
-       1, 31, 31, 31, 31, 31, 31, 31,
-       31, 31, 31, 1, 25, 1, 22, 1,
-       32, 32, 32, 32, 32, 32, 32, 32,
-       32, 32, 1, 22, 1, 16, 1, 33,
-       33, 33, 33, 33, 33, 33, 33, 33,
-       33, 18, 1, 1, 1, 1, 1, 1,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 1, 1, 1, 1, 20, 1,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 1, 16, 1, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 18,
-       1, 1, 1, 1, 1, 1, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       1, 1, 1, 1, 20, 1, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       1, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 18, 1, 1, 1, 1,
-       1, 1, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 1, 1, 1, 1,
-       20, 1, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 1, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 1,
-       1, 1, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 1, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 1, 1,
-       29, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 34, 34, 34, 34, 34, 34,
-       34, 34, 1, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 1, 1, 1,
-       1, 1, 1, 1, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 1, 1,
-       1, 1, 20, 1, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 19, 19,
-       19, 19, 19, 19, 19, 19, 1, 35,
-       35, 36, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 37, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 1, 38,
-       38, 39, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 40, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 38, 38,
-       38, 38, 38, 38, 38, 38, 1, 41,
-       1, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       42, 42, 42, 42, 42, 42, 42, 42,
-       1, 43, 43, 44, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 45, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       43, 43, 43, 43, 43, 43, 43, 43,
-       1, 46, 47, 46, 46, 46, 46, 46,
-       1, 1, 46, 46, 1, 1, 1, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 1, 1, 1, 46, 48, 46,
-       49, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 1, 1, 1, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 1,
-       50, 1, 50, 50, 50, 50, 50, 1,
-       1, 50, 50, 1, 1, 51, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 1, 1, 1, 50, 1, 50, 52,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 1, 1, 1, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 1, 50,
-       1, 50, 50, 50, 50, 50, 1, 1,
-       50, 50, 1, 1, 1, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       1, 1, 1, 50, 1, 50, 1, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 1, 1, 1, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 50, 50, 50,
-       50, 50, 50, 50, 50, 1, 53, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       1, 1, 1, 1, 1, 1, 1, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 54, 1, 1, 1, 1, 1, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 53, 53, 53, 53, 53, 53, 53,
-       53, 1, 55, 1, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 1, 1,
-       1, 1, 57, 1, 1, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 1,
-       1, 1, 1, 58, 1, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 1,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 1, 1, 1, 1, 1, 1,
-       1, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 1, 1, 1, 1, 1,
-       1, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 1, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 1, 1,
-       1, 1, 1, 1, 1, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 1,
-       1, 1, 1, 58, 1, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 56,
-       56, 56, 56, 56, 56, 56, 56, 1,
-       59, 59, 59, 59, 59, 59, 59, 59,
-       59, 59, 1, 1, 1, 1, 1, 1,
-       1, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 1, 1, 1, 1, 61,
-       1, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 60, 60, 60, 60, 60,
-       60, 60, 60, 1, 62, 1, 63, 63,
-       63, 63, 63, 63, 63, 63, 63, 63,
-       64, 1, 1, 1, 1, 1, 1, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 1, 1, 1, 1, 66, 1, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 1, 67, 67, 67, 67, 67, 67,
-       67, 67, 67, 67, 1, 68, 1, 69,
-       69, 69, 69, 69, 69, 69, 69, 69,
-       69, 1, 70, 70, 70, 70, 70, 70,
-       70, 70, 70, 70, 1, 71, 1, 72,
-       72, 72, 72, 72, 72, 72, 72, 72,
-       72, 1, 73, 73, 73, 73, 73, 73,
-       73, 73, 73, 73, 1, 74, 74, 74,
-       74, 74, 74, 74, 74, 74, 74, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 75, 1, 76, 76, 76, 76,
-       76, 76, 76, 76, 76, 76, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 75, 1, 75, 1, 77, 1, 71,
-       1, 78, 78, 78, 78, 78, 78, 78,
-       78, 78, 78, 1, 71, 1, 68, 1,
-       79, 79, 79, 79, 79, 79, 79, 79,
-       79, 79, 1, 68, 1, 62, 1, 80,
-       80, 80, 80, 80, 80, 80, 80, 80,
-       80, 64, 1, 1, 1, 1, 1, 1,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 1, 1, 1, 1, 66, 1,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 1, 62, 1, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 64,
-       1, 1, 1, 1, 1, 1, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       1, 1, 1, 1, 66, 1, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       1, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 64, 1, 1, 1, 1,
-       1, 1, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 1, 1, 1, 1,
-       66, 1, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 1, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 1,
-       1, 1, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 1, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 1, 1,
-       75, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 81, 81, 81, 81, 81, 81,
-       81, 81, 1, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 1, 1, 1,
-       1, 1, 1, 1, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 1, 1,
-       1, 1, 66, 1, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 65, 65,
-       65, 65, 65, 65, 65, 65, 1, 82,
-       82, 83, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 84, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 82, 82,
-       82, 82, 82, 82, 82, 82, 1, 85,
-       85, 86, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 87, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 85, 85,
-       85, 85, 85, 85, 85, 85, 1, 88,
-       1, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       89, 89, 89, 89, 89, 89, 89, 89,
-       1, 90, 90, 91, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 92, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       90, 90, 90, 90, 90, 90, 90, 90,
-       1, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 1, 1, 1, 1, 1,
-       1, 1, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 1, 1, 1, 1,
-       1, 1, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 1, 94, 1, 49,
-       1, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 95, 1, 1, 1, 1,
-       1, 1, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 1, 1, 1, 1,
-       96, 1, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 1, 49, 1, 46,
-       47, 46, 46, 46, 46, 46, 1, 1,
-       46, 46, 1, 1, 1, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       1, 1, 1, 46, 1, 46, 1, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 1, 1, 1, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 46, 46, 46,
-       46, 46, 46, 46, 46, 1, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       1, 1, 1, 1, 1, 1, 1, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 1, 1, 1, 1, 96, 1, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 93, 93, 93, 93, 93, 93, 93,
-       93, 1, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 1, 1, 1, 1,
-       1, 1, 1, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 1, 1, 1,
-       1, 1, 1, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 1, 98, 1,
-       5, 1, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 99, 1, 1, 1,
-       1, 1, 1, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 1, 1, 1,
-       1, 100, 1, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 1, 5, 1,
-       2, 3, 2, 2, 2, 2, 2, 1,
-       1, 2, 2, 1, 1, 1, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 1, 1, 1, 2, 1, 2, 1,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 1, 1, 1, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 1, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 1, 1, 1, 1, 1, 1, 1,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 1, 1, 1, 1, 100, 1,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 97, 97, 97, 97, 97, 97,
-       97, 97, 1, 101, 101, 101, 101, 101,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 101, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       102, 1, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 1, 1, 1, 1,
-       1, 1, 1, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 1, 1, 1,
-       1, 12, 1, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 11, 11, 11,
-       11, 11, 11, 11, 11, 1, 103, 103,
-       103, 103, 103, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 103, 1, 104,
-       104, 104, 104, 104, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 104, 1,
-       105, 105, 105, 105, 105, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 105,
-       1, 106, 106, 106, 106, 106, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       1, 1, 1, 1, 1, 1, 1, 1,
-       106, 1, 0
-};
-
-static const char _smtp_addr_parser_trans_targs[] = {
-       1, 0, 2, 27, 32, 70, 2, 3,
-       4, 75, 7, 75, 6, 8, 23, 26,
-       9, 21, 24, 23, 26, 10, 11, 19,
-       12, 13, 17, 14, 15, 77, 16, 18,
-       20, 22, 25, 28, 29, 30, 28, 29,
-       30, 4, 31, 28, 29, 30, 33, 60,
-       79, 65, 33, 34, 35, 36, 39, 37,
-       36, 78, 38, 40, 56, 59, 41, 54,
-       57, 56, 59, 42, 43, 52, 44, 45,
-       50, 46, 47, 49, 48, 78, 51, 53,
-       55, 58, 61, 62, 63, 61, 62, 63,
-       35, 64, 61, 62, 63, 66, 67, 68,
-       69, 71, 72, 73, 74, 76, 5, 76,
-       76, 76, 76
-};
-
-static const char _smtp_addr_parser_trans_actions[] = {
-       0, 0, 1, 2, 0, 0, 0, 0,
-       3, 4, 0, 0, 0, 5, 5, 5,
-       0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 6, 0, 0,
-       0, 0, 0, 7, 8, 7, 0, 3,
-       0, 9, 0, 10, 11, 10, 1, 2,
-       0, 0, 0, 0, 3, 4, 0, 0,
-       0, 12, 0, 5, 5, 5, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 6, 0, 13, 0, 0,
-       0, 0, 7, 8, 7, 0, 3, 0,
-       9, 0, 10, 11, 10, 0, 0, 0,
-       0, 0, 0, 0, 0, 14, 0, 0,
-       15, 16, 17
-};
-
 static const char _smtp_addr_parser_eof_actions[] = {
        0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0,
@@ -675,100 +41,999 @@ rspamd_smtp_addr_parse (const char *data, size_t len, struct rspamd_email_addres
   eof = pe;
 
 
-#line 679 "src/libmime/parsers/smtp_addr_parser.c"
+#line 45 "src/libmime/parsers/smtp_addr_parser.c"
        {
        cs = smtp_addr_parser_start;
        }
 
 #line 89 "src/ragel/smtp_addr_parser.rl"
 
-#line 686 "src/libmime/parsers/smtp_addr_parser.c"
+#line 52 "src/libmime/parsers/smtp_addr_parser.c"
        {
-       int _slen;
-       int _trans;
-       const char *_keys;
-       const char *_inds;
        if ( p == pe )
                goto _test_eof;
        if ( cs == 0 )
                goto _out;
 _resume:
-       _keys = _smtp_addr_parser_trans_keys + (cs<<1);
-       _inds = _smtp_addr_parser_indicies + _smtp_addr_parser_index_offsets[cs];
-
-       _slen = _smtp_addr_parser_key_spans[cs];
-       _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
-               (*p) <= _keys[1] ?
-               (*p) - _keys[0] : _slen ];
-
-       cs = _smtp_addr_parser_trans_targs[_trans];
+       switch ( cs ) {
+case 1:
+       switch( (*p) ) {
+               case 32: goto tr0;
+               case 34: goto tr3;
+               case 45: goto tr2;
+               case 60: goto tr4;
+               case 61: goto tr2;
+               case 64: goto tr5;
+       }
+       if ( (*p) < 42 ) {
+               if ( (*p) > 13 ) {
+                       if ( 33 <= (*p) && (*p) <= 39 )
+                               goto tr2;
+               } else if ( (*p) >= 9 )
+                       goto tr0;
+       } else if ( (*p) > 43 ) {
+               if ( (*p) < 63 ) {
+                       if ( 47 <= (*p) && (*p) <= 57 )
+                               goto tr2;
+               } else if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr2;
+               } else
+                       goto tr2;
+       } else
+               goto tr2;
+       goto tr1;
+case 0:
+       goto _out;
+case 2:
+       switch( (*p) ) {
+               case 33: goto tr6;
+               case 46: goto tr7;
+               case 61: goto tr6;
+               case 64: goto tr8;
+       }
+       if ( (*p) < 45 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr6;
+               } else if ( (*p) >= 35 )
+                       goto tr6;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr6;
+               } else if ( (*p) >= 63 )
+                       goto tr6;
+       } else
+               goto tr6;
+       goto tr1;
+case 3:
+       switch( (*p) ) {
+               case 33: goto tr6;
+               case 45: goto tr6;
+               case 61: goto tr6;
+               case 63: goto tr6;
+       }
+       if ( (*p) < 47 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr6;
+               } else if ( (*p) >= 35 )
+                       goto tr6;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr6;
+               } else if ( (*p) >= 65 )
+                       goto tr6;
+       } else
+               goto tr6;
+       goto tr1;
+case 4:
+       if ( (*p) == 91 )
+               goto tr10;
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr9;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr9;
+       } else
+               goto tr9;
+       goto tr1;
+case 75:
+       switch( (*p) ) {
+               case 32: goto tr101;
+               case 45: goto tr11;
+               case 46: goto tr102;
+               case 95: goto tr11;
+       }
+       if ( (*p) < 48 ) {
+               if ( 9 <= (*p) && (*p) <= 13 )
+                       goto tr101;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 97 <= (*p) && (*p) <= 122 )
+                               goto tr12;
+               } else if ( (*p) >= 65 )
+                       goto tr12;
+       } else
+               goto tr12;
+       goto tr1;
+case 76:
+       if ( (*p) == 32 )
+               goto tr103;
+       if ( 9 <= (*p) && (*p) <= 13 )
+               goto tr103;
+       goto tr1;
+case 5:
+       switch( (*p) ) {
+               case 45: goto tr11;
+               case 95: goto tr11;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr12;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr12;
+       } else
+               goto tr12;
+       goto tr1;
+case 6:
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr12;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr12;
+       } else
+               goto tr12;
+       goto tr1;
+case 7:
+       switch( (*p) ) {
+               case 45: goto tr13;
+               case 95: goto tr13;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr14;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr15;
+       } else
+               goto tr15;
+       goto tr1;
+case 8:
+       switch( (*p) ) {
+               case 45: goto tr16;
+               case 95: goto tr16;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr17;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr17;
+       } else
+               goto tr17;
+       goto tr1;
+case 9:
+       switch( (*p) ) {
+               case 45: goto tr16;
+               case 58: goto tr18;
+               case 95: goto tr16;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr17;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr17;
+       } else
+               goto tr17;
+       goto tr1;
+case 10:
+       if ( (*p) > 90 ) {
+               if ( 94 <= (*p) && (*p) <= 126 )
+                       goto tr19;
+       } else if ( (*p) >= 33 )
+               goto tr19;
+       goto tr1;
+case 11:
+       if ( (*p) == 93 )
+               goto tr20;
+       if ( (*p) > 90 ) {
+               if ( 94 <= (*p) && (*p) <= 126 )
+                       goto tr19;
+       } else if ( (*p) >= 33 )
+               goto tr19;
+       goto tr1;
+case 77:
+       if ( (*p) == 32 )
+               goto tr104;
+       if ( 9 <= (*p) && (*p) <= 13 )
+               goto tr104;
+       goto tr1;
+case 12:
+       switch( (*p) ) {
+               case 45: goto tr16;
+               case 46: goto tr21;
+               case 58: goto tr18;
+               case 95: goto tr16;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr22;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr17;
+       } else
+               goto tr17;
+       goto tr1;
+case 13:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr23;
+       goto tr1;
+case 14:
+       if ( (*p) == 46 )
+               goto tr24;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr25;
+       goto tr1;
+case 15:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr26;
+       goto tr1;
+case 16:
+       if ( (*p) == 46 )
+               goto tr27;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr28;
+       goto tr1;
+case 17:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr29;
+       goto tr1;
+case 18:
+       if ( (*p) == 93 )
+               goto tr20;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr30;
+       goto tr1;
+case 19:
+       if ( (*p) == 93 )
+               goto tr20;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr31;
+       goto tr1;
+case 20:
+       if ( (*p) == 93 )
+               goto tr20;
+       goto tr1;
+case 21:
+       if ( (*p) == 46 )
+               goto tr27;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr32;
+       goto tr1;
+case 22:
+       if ( (*p) == 46 )
+               goto tr27;
+       goto tr1;
+case 23:
+       if ( (*p) == 46 )
+               goto tr24;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr33;
+       goto tr1;
+case 24:
+       if ( (*p) == 46 )
+               goto tr24;
+       goto tr1;
+case 25:
+       switch( (*p) ) {
+               case 45: goto tr16;
+               case 46: goto tr21;
+               case 58: goto tr18;
+               case 95: goto tr16;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr34;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr17;
+       } else
+               goto tr17;
+       goto tr1;
+case 26:
+       switch( (*p) ) {
+               case 45: goto tr16;
+               case 46: goto tr21;
+               case 58: goto tr18;
+               case 95: goto tr16;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr17;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr17;
+       } else
+               goto tr17;
+       goto tr1;
+case 27:
+       switch( (*p) ) {
+               case 34: goto tr36;
+               case 92: goto tr37;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr35;
+       goto tr1;
+case 28:
+       switch( (*p) ) {
+               case 34: goto tr39;
+               case 92: goto tr40;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr38;
+       goto tr1;
+case 29:
+       if ( (*p) == 64 )
+               goto tr41;
+       goto tr1;
+case 30:
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr42;
+       goto tr1;
+case 31:
+       switch( (*p) ) {
+               case 34: goto tr44;
+               case 92: goto tr45;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr43;
+       goto tr1;
+case 32:
+       switch( (*p) ) {
+               case 34: goto tr47;
+               case 45: goto tr46;
+               case 62: goto tr48;
+               case 64: goto tr49;
+       }
+       if ( (*p) < 47 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr46;
+               } else if ( (*p) >= 33 )
+                       goto tr46;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr46;
+               } else if ( (*p) >= 61 )
+                       goto tr46;
+       } else
+               goto tr46;
+       goto tr1;
+case 33:
+       switch( (*p) ) {
+               case 33: goto tr50;
+               case 46: goto tr51;
+               case 61: goto tr50;
+               case 64: goto tr52;
+       }
+       if ( (*p) < 45 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr50;
+               } else if ( (*p) >= 35 )
+                       goto tr50;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr50;
+               } else if ( (*p) >= 63 )
+                       goto tr50;
+       } else
+               goto tr50;
+       goto tr1;
+case 34:
+       switch( (*p) ) {
+               case 33: goto tr50;
+               case 45: goto tr50;
+               case 61: goto tr50;
+               case 63: goto tr50;
+       }
+       if ( (*p) < 47 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr50;
+               } else if ( (*p) >= 35 )
+                       goto tr50;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr50;
+               } else if ( (*p) >= 65 )
+                       goto tr50;
+       } else
+               goto tr50;
+       goto tr1;
+case 35:
+       if ( (*p) == 91 )
+               goto tr54;
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr53;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr53;
+       } else
+               goto tr53;
+       goto tr1;
+case 36:
+       switch( (*p) ) {
+               case 45: goto tr55;
+               case 46: goto tr56;
+               case 62: goto tr58;
+               case 95: goto tr55;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr57;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr57;
+       } else
+               goto tr57;
+       goto tr1;
+case 37:
+       switch( (*p) ) {
+               case 45: goto tr55;
+               case 95: goto tr55;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr57;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr57;
+       } else
+               goto tr57;
+       goto tr1;
+case 38:
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr57;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr57;
+       } else
+               goto tr57;
+       goto tr1;
+case 78:
+       if ( (*p) == 32 )
+               goto tr105;
+       if ( 9 <= (*p) && (*p) <= 13 )
+               goto tr105;
+       goto tr1;
+case 39:
+       switch( (*p) ) {
+               case 45: goto tr59;
+               case 95: goto tr59;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr60;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr61;
+       } else
+               goto tr61;
+       goto tr1;
+case 40:
+       switch( (*p) ) {
+               case 45: goto tr62;
+               case 95: goto tr62;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr63;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr63;
+       } else
+               goto tr63;
+       goto tr1;
+case 41:
+       switch( (*p) ) {
+               case 45: goto tr62;
+               case 58: goto tr64;
+               case 95: goto tr62;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr63;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr63;
+       } else
+               goto tr63;
+       goto tr1;
+case 42:
+       if ( (*p) > 90 ) {
+               if ( 94 <= (*p) && (*p) <= 126 )
+                       goto tr65;
+       } else if ( (*p) >= 33 )
+               goto tr65;
+       goto tr1;
+case 43:
+       if ( (*p) == 93 )
+               goto tr66;
+       if ( (*p) > 90 ) {
+               if ( 94 <= (*p) && (*p) <= 126 )
+                       goto tr65;
+       } else if ( (*p) >= 33 )
+               goto tr65;
+       goto tr1;
+case 44:
+       if ( (*p) == 62 )
+               goto tr67;
+       goto tr1;
+case 45:
+       switch( (*p) ) {
+               case 45: goto tr62;
+               case 46: goto tr68;
+               case 58: goto tr64;
+               case 95: goto tr62;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr69;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr63;
+       } else
+               goto tr63;
+       goto tr1;
+case 46:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr70;
+       goto tr1;
+case 47:
+       if ( (*p) == 46 )
+               goto tr71;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr72;
+       goto tr1;
+case 48:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr73;
+       goto tr1;
+case 49:
+       if ( (*p) == 46 )
+               goto tr74;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr75;
+       goto tr1;
+case 50:
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr76;
+       goto tr1;
+case 51:
+       if ( (*p) == 93 )
+               goto tr66;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr77;
+       goto tr1;
+case 52:
+       if ( (*p) == 93 )
+               goto tr66;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr78;
+       goto tr1;
+case 53:
+       if ( (*p) == 93 )
+               goto tr66;
+       goto tr1;
+case 54:
+       if ( (*p) == 46 )
+               goto tr74;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr79;
+       goto tr1;
+case 55:
+       if ( (*p) == 46 )
+               goto tr74;
+       goto tr1;
+case 56:
+       if ( (*p) == 46 )
+               goto tr71;
+       if ( 48 <= (*p) && (*p) <= 57 )
+               goto tr80;
+       goto tr1;
+case 57:
+       if ( (*p) == 46 )
+               goto tr71;
+       goto tr1;
+case 58:
+       switch( (*p) ) {
+               case 45: goto tr62;
+               case 46: goto tr68;
+               case 58: goto tr64;
+               case 95: goto tr62;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr81;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr63;
+       } else
+               goto tr63;
+       goto tr1;
+case 59:
+       switch( (*p) ) {
+               case 45: goto tr62;
+               case 46: goto tr68;
+               case 58: goto tr64;
+               case 95: goto tr62;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr63;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr63;
+       } else
+               goto tr63;
+       goto tr1;
+case 60:
+       switch( (*p) ) {
+               case 34: goto tr83;
+               case 92: goto tr84;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr82;
+       goto tr1;
+case 61:
+       switch( (*p) ) {
+               case 34: goto tr86;
+               case 92: goto tr87;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr85;
+       goto tr1;
+case 62:
+       if ( (*p) == 64 )
+               goto tr88;
+       goto tr1;
+case 63:
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr89;
+       goto tr1;
+case 64:
+       switch( (*p) ) {
+               case 34: goto tr91;
+               case 92: goto tr92;
+       }
+       if ( 32 <= (*p) && (*p) <= 126 )
+               goto tr90;
+       goto tr1;
+case 79:
+       if ( (*p) == 32 )
+               goto tr106;
+       if ( 9 <= (*p) && (*p) <= 13 )
+               goto tr106;
+       goto tr1;
+case 65:
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr93;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr93;
+       } else
+               goto tr93;
+       goto tr1;
+case 66:
+       switch( (*p) ) {
+               case 44: goto tr94;
+               case 45: goto tr95;
+               case 46: goto tr49;
+               case 58: goto tr96;
+               case 95: goto tr95;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr93;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr93;
+       } else
+               goto tr93;
+       goto tr1;
+case 67:
+       if ( (*p) == 64 )
+               goto tr49;
+       goto tr1;
+case 68:
+       switch( (*p) ) {
+               case 45: goto tr95;
+               case 95: goto tr95;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr93;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr93;
+       } else
+               goto tr93;
+       goto tr1;
+case 69:
+       switch( (*p) ) {
+               case 34: goto tr47;
+               case 45: goto tr46;
+               case 61: goto tr46;
+               case 63: goto tr46;
+       }
+       if ( (*p) < 47 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr46;
+               } else if ( (*p) >= 33 )
+                       goto tr46;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr46;
+               } else if ( (*p) >= 65 )
+                       goto tr46;
+       } else
+               goto tr46;
+       goto tr1;
+case 70:
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr97;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr97;
+       } else
+               goto tr97;
+       goto tr1;
+case 71:
+       switch( (*p) ) {
+               case 44: goto tr98;
+               case 45: goto tr99;
+               case 46: goto tr5;
+               case 58: goto tr100;
+               case 95: goto tr99;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr97;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr97;
+       } else
+               goto tr97;
+       goto tr1;
+case 72:
+       if ( (*p) == 64 )
+               goto tr5;
+       goto tr1;
+case 73:
+       switch( (*p) ) {
+               case 45: goto tr99;
+               case 95: goto tr99;
+       }
+       if ( (*p) < 65 ) {
+               if ( 48 <= (*p) && (*p) <= 57 )
+                       goto tr97;
+       } else if ( (*p) > 90 ) {
+               if ( 97 <= (*p) && (*p) <= 122 )
+                       goto tr97;
+       } else
+               goto tr97;
+       goto tr1;
+case 74:
+       switch( (*p) ) {
+               case 34: goto tr3;
+               case 45: goto tr2;
+               case 61: goto tr2;
+               case 63: goto tr2;
+       }
+       if ( (*p) < 47 ) {
+               if ( (*p) > 39 ) {
+                       if ( 42 <= (*p) && (*p) <= 43 )
+                               goto tr2;
+               } else if ( (*p) >= 33 )
+                       goto tr2;
+       } else if ( (*p) > 57 ) {
+               if ( (*p) > 90 ) {
+                       if ( 94 <= (*p) && (*p) <= 126 )
+                               goto tr2;
+               } else if ( (*p) >= 65 )
+                       goto tr2;
+       } else
+               goto tr2;
+       goto tr1;
+       }
 
-       if ( _smtp_addr_parser_trans_actions[_trans] == 0 )
-               goto _again;
+       tr1: cs = 0; goto _again;
+       tr0: cs = 1; goto _again;
+       tr6: cs = 2; goto _again;
+       tr2: cs = 2; goto f0;
+       tr7: cs = 3; goto _again;
+       tr8: cs = 4; goto f2;
+       tr41: cs = 4; goto f8;
+       tr11: cs = 5; goto _again;
+       tr102: cs = 6; goto _again;
+       tr10: cs = 7; goto _again;
+       tr16: cs = 8; goto _again;
+       tr13: cs = 8; goto f4;
+       tr17: cs = 9; goto _again;
+       tr15: cs = 9; goto f4;
+       tr18: cs = 10; goto _again;
+       tr19: cs = 11; goto _again;
+       tr14: cs = 12; goto f4;
+       tr21: cs = 13; goto _again;
+       tr23: cs = 14; goto _again;
+       tr24: cs = 15; goto _again;
+       tr26: cs = 16; goto _again;
+       tr27: cs = 17; goto _again;
+       tr29: cs = 18; goto _again;
+       tr30: cs = 19; goto _again;
+       tr31: cs = 20; goto _again;
+       tr28: cs = 21; goto _again;
+       tr32: cs = 22; goto _again;
+       tr25: cs = 23; goto _again;
+       tr33: cs = 24; goto _again;
+       tr22: cs = 25; goto _again;
+       tr34: cs = 26; goto _again;
+       tr3: cs = 27; goto f1;
+       tr38: cs = 28; goto _again;
+       tr35: cs = 28; goto f6;
+       tr43: cs = 28; goto f9;
+       tr39: cs = 29; goto f2;
+       tr36: cs = 29; goto f7;
+       tr44: cs = 29; goto f10;
+       tr40: cs = 30; goto _again;
+       tr37: cs = 30; goto f6;
+       tr45: cs = 30; goto f9;
+       tr42: cs = 31; goto _again;
+       tr4: cs = 32; goto _again;
+       tr50: cs = 33; goto _again;
+       tr46: cs = 33; goto f0;
+       tr51: cs = 34; goto _again;
+       tr52: cs = 35; goto f2;
+       tr88: cs = 35; goto f8;
+       tr57: cs = 36; goto _again;
+       tr53: cs = 36; goto f3;
+       tr55: cs = 37; goto _again;
+       tr56: cs = 38; goto _again;
+       tr54: cs = 39; goto _again;
+       tr62: cs = 40; goto _again;
+       tr59: cs = 40; goto f4;
+       tr63: cs = 41; goto _again;
+       tr61: cs = 41; goto f4;
+       tr64: cs = 42; goto _again;
+       tr65: cs = 43; goto _again;
+       tr66: cs = 44; goto f5;
+       tr60: cs = 45; goto f4;
+       tr68: cs = 46; goto _again;
+       tr70: cs = 47; goto _again;
+       tr71: cs = 48; goto _again;
+       tr73: cs = 49; goto _again;
+       tr74: cs = 50; goto _again;
+       tr76: cs = 51; goto _again;
+       tr77: cs = 52; goto _again;
+       tr78: cs = 53; goto _again;
+       tr75: cs = 54; goto _again;
+       tr79: cs = 55; goto _again;
+       tr72: cs = 56; goto _again;
+       tr80: cs = 57; goto _again;
+       tr69: cs = 58; goto _again;
+       tr81: cs = 59; goto _again;
+       tr47: cs = 60; goto f1;
+       tr85: cs = 61; goto _again;
+       tr82: cs = 61; goto f6;
+       tr90: cs = 61; goto f9;
+       tr86: cs = 62; goto f2;
+       tr83: cs = 62; goto f7;
+       tr91: cs = 62; goto f10;
+       tr87: cs = 63; goto _again;
+       tr84: cs = 63; goto f6;
+       tr92: cs = 63; goto f9;
+       tr89: cs = 64; goto _again;
+       tr49: cs = 65; goto _again;
+       tr93: cs = 66; goto _again;
+       tr94: cs = 67; goto _again;
+       tr95: cs = 68; goto _again;
+       tr96: cs = 69; goto _again;
+       tr5: cs = 70; goto _again;
+       tr97: cs = 71; goto _again;
+       tr98: cs = 72; goto _again;
+       tr99: cs = 73; goto _again;
+       tr100: cs = 74; goto _again;
+       tr12: cs = 75; goto _again;
+       tr9: cs = 75; goto f3;
+       tr103: cs = 76; goto _again;
+       tr101: cs = 76; goto f13;
+       tr104: cs = 76; goto f14;
+       tr105: cs = 76; goto f15;
+       tr106: cs = 76; goto f16;
+       tr20: cs = 77; goto f5;
+       tr58: cs = 78; goto f11;
+       tr67: cs = 78; goto f12;
+       tr48: cs = 79; goto _again;
 
-       switch ( _smtp_addr_parser_trans_actions[_trans] ) {
-       case 7:
+f6:
 #line 5 "src/ragel/smtp_addr_parser.rl"
        {
     addr->user = p;
   }
-       break;
-       case 3:
+       goto _again;
+f2:
 #line 9 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->user) {
       addr->user_len = p - addr->user;
     }
   }
-       break;
-       case 4:
+       goto _again;
+f3:
 #line 15 "src/ragel/smtp_addr_parser.rl"
        {
     addr->domain = p;
   }
-       break;
-       case 5:
+       goto _again;
+f4:
 #line 25 "src/ragel/smtp_addr_parser.rl"
        {
     addr->domain = p;
     addr->flags |= RSPAMD_EMAIL_ADDR_IP;
   }
-       break;
-       case 6:
+       goto _again;
+f5:
 #line 30 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->domain) {
       addr->domain_len = p - addr->domain;
     }
   }
-       break;
-       case 10:
+       goto _again;
+f9:
 #line 36 "src/ragel/smtp_addr_parser.rl"
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_HAS_BACKSLASH;
   }
-       break;
-       case 9:
+       goto _again;
+f8:
 #line 40 "src/ragel/smtp_addr_parser.rl"
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_QUOTED;
   }
-       break;
-       case 2:
+       goto _again;
+f1:
 #line 59 "src/ragel/smtp_addr_parser.rl"
        {
     addr->addr = p;
   }
-       break;
-       case 13:
+       goto _again;
+f12:
 #line 63 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->addr) {
       addr->addr_len = p - addr->addr;
     }
   }
-       break;
-       case 8:
+       goto _again;
+f7:
 #line 5 "src/ragel/smtp_addr_parser.rl"
        {
     addr->user = p;
@@ -779,8 +1044,8 @@ _resume:
       addr->user_len = p - addr->user;
     }
   }
-       break;
-       case 12:
+       goto _again;
+f11:
 #line 19 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->domain) {
@@ -793,8 +1058,8 @@ _resume:
       addr->addr_len = p - addr->addr;
     }
   }
-       break;
-       case 11:
+       goto _again;
+f10:
 #line 36 "src/ragel/smtp_addr_parser.rl"
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_HAS_BACKSLASH;
@@ -805,8 +1070,8 @@ _resume:
       addr->user_len = p - addr->user;
     }
   }
-       break;
-       case 17:
+       goto _again;
+f16:
 #line 44 "src/ragel/smtp_addr_parser.rl"
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
@@ -818,8 +1083,8 @@ _resume:
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
   }
-       break;
-       case 16:
+       goto _again;
+f15:
 #line 55 "src/ragel/smtp_addr_parser.rl"
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
@@ -828,8 +1093,8 @@ _resume:
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
   }
-       break;
-       case 1:
+       goto _again;
+f0:
 #line 59 "src/ragel/smtp_addr_parser.rl"
        {
     addr->addr = p;
@@ -838,8 +1103,8 @@ _resume:
        {
     addr->user = p;
   }
-       break;
-       case 15:
+       goto _again;
+f14:
 #line 63 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->addr) {
@@ -850,8 +1115,8 @@ _resume:
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
   }
-       break;
-       case 14:
+       goto _again;
+f13:
 #line 19 "src/ragel/smtp_addr_parser.rl"
        {
     if (addr->domain) {
@@ -868,9 +1133,7 @@ _resume:
        {
     addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
   }
-       break;
-#line 873 "src/libmime/parsers/smtp_addr_parser.c"
-       }
+       goto _again;
 
 _again:
        if ( cs == 0 )
@@ -934,7 +1197,7 @@ _again:
     addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
   }
        break;
-#line 938 "src/libmime/parsers/smtp_addr_parser.c"
+#line 1201 "src/libmime/parsers/smtp_addr_parser.c"
        }
        }
 
index d98fb57eb72206a5a1e3a9f4114f4291419d960b..dd148d6543c64e8f422ca8f023667af18dab4cab 100644 (file)
 
   atext = alpha | digit | "!" | "#" | "$" | "%" | "&" |
           "'" | "*" | "+" | "_" | "/" | "=" | "?" | "^" |
-          "_" | "`" | "{" | "|" | "}" | "~";
+          "-" | "`" | "{" | "|" | "}" | "~";
 
   dcontent       = 33..90 | 94..126;
   Let_dig        = alpha | digit;
-  Ldh_str        = ( alpha | digit | "_" )* Let_dig;
+  Ldh_str        = ( alpha | digit | "_" | "-" )* Let_dig;
 
   quoted_pairSMTP  = "\\" 32..126;
   qtextSMTP      = 32..33 | 35..91 | 93..126;