Skip to content

Stack overflow during configuration load after upgrading from 0.8.2 to 0.9.0 #832

@hydazz

Description

@hydazz

Describe the bug

After upgrading maddy from 0.8.2 to 0.9.0, maddy run/entrypoint fails during configuration loading with a stack overflow.

The same configuration worked on 0.8.2 without changes. After the upgrade, maddy crashes while loading the config instead of either starting successfully or returning a configuration error issue.

The issue appears to be related to module/pipeline initialisation recursion involving a msgpipeline and target.queue bounce path.

Expected behaviour:

  • startup normally, as 0.8.2 did (unless my config is now invalid?)

Actual behavior:

  • crashes during startup with a stack overflow while loading configuration

Steps to reproduce

  1. Try maddy run with my config, or one thats similar:
    • a msgpipeline used for local routing
    • a target.queue used for outbound delivery
    • the queue bounce path delivering back into the local routing pipeline
    • the local routing pipeline being able to deliver to the queue for some destinations

Log files

~ $ maddy run
loading configuration...	
runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc023280570 stack=[0xc023280000, 0xc043280000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x13e5229?, 0x7f8a1d142940?})
	runtime/panic.go:1073 +0x48 fp=0x7f8a1d142900 sp=0x7f8a1d1428d0 pc=0x473bc8
runtime.newstack()
	runtime/stack.go:1117 +0x5bd fp=0x7f8a1d142a40 sp=0x7f8a1d142900 pc=0x457c5d
runtime.morestack()
	runtime/asm_amd64.s:621 +0x7a fp=0x7f8a1d142a48 sp=0x7f8a1d142a40 pc=0x47a53a

goroutine 1 gp=0xc0000061c0 m=24 mp=0xc0004cb508 [running]:
github.com/foxcpp/maddy/internal/msgpipeline.(*Module).Configure(0xc000425680, {0x0?, 0x0?, 0x0?}, 0xc008c83900)
	github.com/foxcpp/maddy/internal/msgpipeline/module.go:40 +0x32f fp=0xc023280580 sp=0xc023280578 pc=0xd5892f
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc023280678 sp=0xc023280580 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003f8d61, 0xd}, 0xc023280740)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc023280718 sp=0xc023280678 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003f8d61, 0xd})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc023280770 sp=0xc023280718 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc023280958 sp=0xc023280770 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc023280a10 sp=0xc023280958 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030da40, 0x1, 0x0?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc023280d58 sp=0xc023280a10 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc01602b740, 0x2, 0x0?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc023281018 sp=0xc023280d58 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc0003e83c0, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc023281408 sp=0xc023281018 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure.func1(0x1f1b560?, {{0xc0003f8970, 0x6}, {0x1f184e0, 0x0, 0x0}, {0xc0003e83c0, 0x2, 0x2}, 0x0, ...})
	github.com/foxcpp/maddy/internal/target/queue/queue.go:222 +0x65 fp=0xc0232816f8 sp=0xc023281408 pc=0xfbf905
github.com/foxcpp/maddy/framework/config.(*Map).ProcessWith(0xc008c83880, 0xc000311dd0, {{0xc0003f87d0, 0xc}, {0xc00040c040, 0x1, 0x1}, {0xc000321d40, 0x3, 0x3}, ...})
	github.com/foxcpp/maddy/framework/config/map.go:681 +0x466 fp=0xc023281a40 sp=0xc0232816f8 pc=0x5bd546
github.com/foxcpp/maddy/framework/config.(*Map).Process(...)
	github.com/foxcpp/maddy/framework/config/map.go:649
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure(0xc000378380, {0x0?, 0xc0072ce838?, 0x1474c70?}, 0xc008c83880)
	github.com/foxcpp/maddy/internal/target/queue/queue.go:224 +0x305 fp=0xc023281b50 sp=0xc023281a40 pc=0xfb8065
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc023281c48 sp=0xc023281b50 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003b4551, 0xc}, 0xc023281d10)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc023281ce8 sp=0xc023281c48 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003b4551, 0xc})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc023281d40 sp=0xc023281ce8 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc023281f28 sp=0xc023281d40 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc023281fe0 sp=0xc023281f28 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030d6e0, 0x1, 0x18?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc023282328 sp=0xc023281fe0 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc01602b440, 0x2, 0x10?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:254 +0xe75 fp=0xc0232825e8 sp=0xc023282328 pc=0xd56bd5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc000393c80, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc0232829d8 sp=0xc0232825e8 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc000393b00, 0x2, 0x1c?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:295 +0x50d fp=0xc023282d20 sp=0xc0232829d8 pc=0xd5756d
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc01602b140, 0x2, 0xc00a3ffb88?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc023282fe0 sp=0xc023282d20 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc00a009440, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc0232833d0 sp=0xc023282fe0 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/msgpipeline.(*Module).Configure(0xc000425680, {0x0?, 0x0?, 0x0?}, 0xc008c82f00)
	github.com/foxcpp/maddy/internal/msgpipeline/module.go:50 +0x145 fp=0xc0232836c0 sp=0xc0232833d0 pc=0xd58745
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc0232837b8 sp=0xc0232836c0 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003f8d61, 0xd}, 0xc023283880)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc023283858 sp=0xc0232837b8 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003f8d61, 0xd})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc0232838b0 sp=0xc023283858 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc023283a98 sp=0xc0232838b0 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc023283b50 sp=0xc023283a98 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030da40, 0x1, 0x0?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc023283e98 sp=0xc023283b50 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc01602ab40, 0x2, 0x0?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc023284158 sp=0xc023283e98 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc0003e83c0, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc023284548 sp=0xc023284158 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure.func1(0x7f8a1c730218?, {{0xc0003f8970, 0x6}, {0x1f184e0, 0x0, 0x0}, {0xc0003e83c0, 0x2, 0x2}, 0x0, ...})
	github.com/foxcpp/maddy/internal/target/queue/queue.go:222 +0x65 fp=0xc023284838 sp=0xc023284548 pc=0xfbf905
github.com/foxcpp/maddy/framework/config.(*Map).ProcessWith(0xc008c82e00, 0xc000311dd0, {{0xc0003f87d0, 0xc}, {0xc00040c040, 0x1, 0x1}, {0xc000321d40, 0x3, 0x3}, ...})
	github.com/foxcpp/maddy/framework/config/map.go:681 +0x466 fp=0xc023284b80 sp=0xc023284838 pc=0x5bd546
github.com/foxcpp/maddy/framework/config.(*Map).Process(...)
	github.com/foxcpp/maddy/framework/config/map.go:649
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure(0xc000378380, {0x0?, 0xc0072ce818?, 0x1474c70?}, 0xc008c82e00)
	github.com/foxcpp/maddy/internal/target/queue/queue.go:224 +0x305 fp=0xc023284c90 sp=0xc023284b80 pc=0xfb8065
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc023284d88 sp=0xc023284c90 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003b4551, 0xc}, 0xc023284e50)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc023284e28 sp=0xc023284d88 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003b4551, 0xc})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc023284e80 sp=0xc023284e28 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc023285068 sp=0xc023284e80 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc023285120 sp=0xc023285068 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030d6e0, 0x1, 0x18?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc023285468 sp=0xc023285120 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc01602a840, 0x2, 0x10?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:254 +0xe75 fp=0xc023285728 sp=0xc023285468 pc=0xd56bd5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc000393c80, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc023285b18 sp=0xc023285728 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
...1149611 frames elided...
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc04327af78 sp=0xc04327ae80 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003f8d61, 0xd}, 0xc000215040)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc04327b018 sp=0xc04327af78 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003f8d61, 0xd})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc04327b070 sp=0xc04327b018 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc04327b258 sp=0xc04327b070 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc00040c070, 0x1, 0x1}, {{0xc0003f8d10, 0xa}, {0xc00040c070, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc04327b310 sp=0xc04327b258 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030da40, 0x1, 0x4?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc04327b658 sp=0xc04327b310 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc0003e8b40, 0x2, 0xc000215a00?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc04327b918 sp=0xc04327b658 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc0003e83c0, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc04327bd08 sp=0xc04327b918 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure.func1(0x52748c?, {{0xc0003f8970, 0x6}, {0x1f184e0, 0x0, 0x0}, {0xc0003e83c0, 0x2, 0x2}, 0x0, ...})
	github.com/foxcpp/maddy/internal/target/queue/queue.go:222 +0x65 fp=0xc04327bff8 sp=0xc04327bd08 pc=0xfbf905
github.com/foxcpp/maddy/framework/config.(*Map).ProcessWith(0xc00032fd80, 0xc000311dd0, {{0xc0003f87d0, 0xc}, {0xc00040c040, 0x1, 0x1}, {0xc000321d40, 0x3, 0x3}, ...})
	github.com/foxcpp/maddy/framework/config/map.go:681 +0x466 fp=0xc04327c340 sp=0xc04327bff8 pc=0x5bd546
github.com/foxcpp/maddy/framework/config.(*Map).Process(...)
	github.com/foxcpp/maddy/framework/config/map.go:649
github.com/foxcpp/maddy/internal/target/queue.(*Queue).Configure(0xc000378380, {0x0?, 0x1381740?, 0x11574d1?}, 0xc00032fd80)
	github.com/foxcpp/maddy/internal/target/queue/queue.go:224 +0x305 fp=0xc04327c450 sp=0xc04327c340 pc=0xfb8065
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc04327c548 sp=0xc04327c450 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003b4551, 0xc}, 0xc000216610)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc04327c5e8 sp=0xc04327c548 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003b4551, 0xc})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc04327c640 sp=0xc04327c5e8 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc04327c828 sp=0xc04327c640 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc000303f10, 0x1, 0x1}, {{0xc0003b4500, 0xa}, {0xc000303f10, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc04327c8e0 sp=0xc04327c828 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030d6e0, 0x1, 0x18?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc04327cc28 sp=0xc04327c8e0 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc0003e8780, 0x2, 0x10?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:254 +0xe75 fp=0xc04327cee8 sp=0xc04327cc28 pc=0xd56bd5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc000393c80, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc04327d2d8 sp=0xc04327cee8 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc000393b00, 0x2, 0x1c?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:295 +0x50d fp=0xc04327d620 sp=0xc04327d2d8 pc=0xd5756d
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc0003e86c0, 0x2, 0xc000428c88?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc04327d8e0 sp=0xc04327d620 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc000446480, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:145 +0x1029 fp=0xc04327dcd0 sp=0xc04327d8e0 pc=0xd556c9
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/msgpipeline.(*Module).Configure(0xc000425680, {0x6447e5?, 0x1157b33?, 0x1?}, 0xc00032f680)
	github.com/foxcpp/maddy/internal/msgpipeline/module.go:50 +0x145 fp=0xc04327dfc0 sp=0xc04327dcd0 pc=0xd58745
github.com/foxcpp/maddy.RegisterModules.func1()
	github.com/foxcpp/maddy/maddy.go:545 +0xf8 fp=0xc04327e0b8 sp=0xc04327dfc0 pc=0xfe1af8
github.com/foxcpp/maddy/framework/module.(*Registry).ensureInitialized(0xc000311530, {0xc0003b50a1, 0xd}, 0xc000218180)
	github.com/foxcpp/maddy/framework/module/registry.go:108 +0x178 fp=0xc04327e158 sp=0xc04327e0b8 pc=0x90d9f8
github.com/foxcpp/maddy/framework/module.(*Registry).Get(0xc000311530, {0xc0003b50a1, 0xd})
	github.com/foxcpp/maddy/framework/module/registry.go:131 +0xc5 fp=0xc04327e1b0 sp=0xc04327e158 pc=0x90db65
github.com/foxcpp/maddy/framework/config/module.ModuleFromNode({0x13d3af8?, 0x0?}, {0xc000303f30, 0x1, 0x1}, {{0xc0003b5050, 0xa}, {0xc000303f30, 0x1, 0x1}, ...}, ...)
	github.com/foxcpp/maddy/framework/config/module/modconfig.go:114 +0x12f fp=0xc04327e398 sp=0xc04327e1b0 pc=0x90fb6f
github.com/foxcpp/maddy/framework/config/module.DeliveryTarget(0xc000311dd0, {0xc000303f30, 0x1, 0x1}, {{0xc0003b5050, 0xa}, {0xc000303f30, 0x1, 0x1}, {0x0, ...}, ...})
	github.com/foxcpp/maddy/framework/config/module/interfaces.go:51 +0xae fp=0xc04327e450 sp=0xc04327e398 pc=0x90ef6e
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRcptCfg(0xc000311dd0, {0xc00030d800, 0x1, 0x0?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:284 +0x785 fp=0xc04327e798 sp=0xc04327e450 pc=0xd577e5
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineSrcCfg(0xc000311dd0, {0xc000393e00, 0x2, 0xc00044a258?})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:196 +0x738 fp=0xc04327ea58 sp=0xc04327e798 pc=0xd56498
github.com/foxcpp/maddy/internal/msgpipeline.parseMsgPipelineRootCfg(0xc000311dd0, {0xc000446240, _, _})
	github.com/foxcpp/maddy/internal/msgpipeline/config.go:156 +0x11a9 fp=0xc04327ee48 sp=0xc04327ea58 pc=0xd55849
github.com/foxcpp/maddy/internal/msgpipeline.New(...)
	github.com/foxcpp/maddy/internal/msgpipeline/msgpipeline.go:89
github.com/foxcpp/maddy/internal/endpoint/smtp.(*Endpoint).setConfig(0xc00036b080, 0xc00032f480)
	github.com/foxcpp/maddy/internal/endpoint/smtp/smtp.go:297 +0x930 fp=0xc04327f1b8 sp=0xc04327ee48 pc=0xd663d0
github.com/foxcpp/maddy/internal/endpoint/smtp.(*Endpoint).Configure(0xc00036b080, {0x4?, 0xc0003f3dc0?, 0x2?}, 0xc00032f480)
	github.com/foxcpp/maddy/internal/endpoint/smtp/smtp.go:114 +0x1b1 fp=0xc04327f378 sp=0xc04327f1b8 pc=0xd64b91
github.com/foxcpp/maddy.RegisterModules(0xc00032e380, 0xc000311dd0, {0xc000396f08?, 0xc000219680?, 0x7f8a00000009?})
	github.com/foxcpp/maddy/maddy.go:580 +0x834 fp=0xc04327f620 sp=0xc04327f378 pc=0xfe1614
github.com/foxcpp/maddy.moduleConfigure({0xc00030e900, 0x10})
	github.com/foxcpp/maddy/maddy.go:380 +0x1b0 fp=0xc04327f788 sp=0xc04327f620 pc=0xfe0150
github.com/foxcpp/maddy.moduleMain({0xc00030e900, 0x10})
	github.com/foxcpp/maddy/maddy.go:416 +0x78 fp=0xc04327f828 sp=0xc04327f788 pc=0xfe0598
github.com/foxcpp/maddy.Run(0xc0003346c0)
	github.com/foxcpp/maddy/maddy.go:224 +0x399 fp=0xc04327f988 sp=0xc04327f828 pc=0xfded79
github.com/urfave/cli/v2.(*Command).Run(0xc00035c2c0, 0xc0003346c0, {0xc0003031a0, 0x1, 0x1})
	github.com/urfave/cli/v2@v2.27.5/command.go:276 +0x7e2 fp=0xc04327fc00 sp=0xc04327f988 pc=0x979ac2
github.com/urfave/cli/v2.(*Command).Run(0xc00037ac60, 0xc000334480, {0xc000040040, 0x2, 0x2})
	github.com/urfave/cli/v2@v2.27.5/command.go:269 +0xa65 fp=0xc04327fe78 sp=0xc04327fc00 pc=0x979d45
github.com/urfave/cli/v2.(*App).RunContext(0xc00028e600, {0x15cbf40, 0x1f184e0}, {0xc000040040, 0x2, 0x2})
	github.com/urfave/cli/v2@v2.27.5/app.go:333 +0x5a5 fp=0xc04327fed8 sp=0xc04327fe78 pc=0x976525
github.com/urfave/cli/v2.(*App).Run(...)
	github.com/urfave/cli/v2@v2.27.5/app.go:307
github.com/foxcpp/maddy/internal/cli.Run()
	github.com/foxcpp/maddy/internal/cli/app.go:126 +0x166 fp=0xc04327ff40 sp=0xc04327fed8 pc=0x98c8e6
main.main()
	github.com/foxcpp/maddy/cmd/maddy/main.go:28 +0xf fp=0xc04327ff50 sp=0xc04327ff40 pc=0xff27cf
runtime.main()
	runtime/proc.go:272 +0x28b fp=0xc04327ffe0 sp=0xc04327ff50 pc=0x43f12b
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc04327ffe8 sp=0xc04327ffe0 pc=0x47c3e1

goroutine 2 gp=0xc000006c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a6fa8 sp=0xc0000a6f88 pc=0x473cee
runtime.goparkunlock(...)
	runtime/proc.go:430
runtime.forcegchelper()
	runtime/proc.go:337 +0xb3 fp=0xc0000a6fe0 sp=0xc0000a6fa8 pc=0x43f473
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a6fe8 sp=0xc0000a6fe0 pc=0x47c3e1
created by runtime.init.7 in goroutine 1
	runtime/proc.go:325 +0x1a

goroutine 3 gp=0xc000007180 m=nil [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a7780 sp=0xc0000a7760 pc=0x473cee
runtime.goparkunlock(...)
	runtime/proc.go:430
runtime.bgsweep(0xc0000d2000)
	runtime/mgcsweep.go:317 +0xdf fp=0xc0000a77c8 sp=0xc0000a7780 pc=0x42885f
runtime.gcenable.gowrap1()
	runtime/mgc.go:204 +0x25 fp=0xc0000a77e0 sp=0xc0000a77c8 pc=0x41cf25
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a77e8 sp=0xc0000a77e0 pc=0x47c3e1
created by runtime.gcenable in goroutine 1
	runtime/mgc.go:204 +0x66

goroutine 4 gp=0xc000007340 m=nil [GC scavenge wait]:
runtime.gopark(0x10000?, 0x15b57c0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a7f78 sp=0xc0000a7f58 pc=0x473cee
runtime.goparkunlock(...)
	runtime/proc.go:430
runtime.(*scavengerState).park(0x1ef5340)
	runtime/mgcscavenge.go:425 +0x49 fp=0xc0000a7fa8 sp=0xc0000a7f78 pc=0x426249
runtime.bgscavenge(0xc0000d2000)
	runtime/mgcscavenge.go:658 +0x59 fp=0xc0000a7fc8 sp=0xc0000a7fa8 pc=0x4267d9
runtime.gcenable.gowrap2()
	runtime/mgc.go:205 +0x25 fp=0xc0000a7fe0 sp=0xc0000a7fc8 pc=0x41cec5
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a7fe8 sp=0xc0000a7fe0 pc=0x47c3e1
created by runtime.gcenable in goroutine 1
	runtime/mgc.go:205 +0xa5

goroutine 5 gp=0xc000007c00 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0x14743a8?, 0x80?, 0xc1?, 0x2000000020?)
	runtime/proc.go:424 +0xce fp=0xc0000a6620 sp=0xc0000a6600 pc=0x473cee
runtime.runfinq()
	runtime/mfinal.go:193 +0x107 fp=0xc0000a67e0 sp=0xc0000a6620 pc=0x41bfa7
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a67e8 sp=0xc0000a67e0 pc=0x47c3e1
created by runtime.createfing in goroutine 1
	runtime/mfinal.go:163 +0x3d

goroutine 6 gp=0xc00020c380 m=nil [chan receive]:
runtime.gopark(0xc0000a8760?, 0x563e65?, 0x80?, 0x24?, 0x15e43c0?)
	runtime/proc.go:424 +0xce fp=0xc0000a8718 sp=0xc0000a86f8 pc=0x473cee
runtime.chanrecv(0xc0000e0310, 0x0, 0x1)
	runtime/chan.go:639 +0x41c fp=0xc0000a8790 sp=0xc0000a8718 pc=0x40c49c
runtime.chanrecv1(0x0?, 0x0?)
	runtime/chan.go:489 +0x12 fp=0xc0000a87b8 sp=0xc0000a8790 pc=0x40c052
runtime.unique_runtime_registerUniqueMapCleanup.func1(...)
	runtime/mgc.go:1782
runtime.unique_runtime_registerUniqueMapCleanup.gowrap1()
	runtime/mgc.go:1785 +0x2f fp=0xc0000a87e0 sp=0xc0000a87b8 pc=0x41ff4f
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a87e8 sp=0xc0000a87e0 pc=0x47c3e1
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
	runtime/mgc.go:1780 +0x96

goroutine 36 gp=0xc00020c700 m=nil [select]:
runtime.gopark(0xc0000a8f68?, 0x2?, 0x70?, 0x0?, 0xc0000a8f44?)
	runtime/proc.go:424 +0xce fp=0xc0000a8de0 sp=0xc0000a8dc0 pc=0x473cee
runtime.selectgo(0xc0000a8f68, 0xc0000a8f40, 0x3?, 0x0, 0xc0000a8f50?, 0x1)
	runtime/select.go:335 +0x7a5 fp=0xc0000a8f08 sp=0xc0000a8de0 pc=0x4511c5
github.com/foxcpp/maddy/internal/limits/limiters.Rate.fill({0xc000348150?, 0xc0003481c0?}, 0x32, 0x3b9aca00)
	github.com/foxcpp/maddy/internal/limits/limiters/rate.go:67 +0xe6 fp=0xc0000a8fb0 sp=0xc0000a8f08 pc=0xd4d786
github.com/foxcpp/maddy/internal/limits/limiters.NewRate.gowrap1()
	github.com/foxcpp/maddy/internal/limits/limiters/rate.go:58 +0x2c fp=0xc0000a8fe0 sp=0xc0000a8fb0 pc=0xd4d66c
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a8fe8 sp=0xc0000a8fe0 pc=0x47c3e1
created by github.com/foxcpp/maddy/internal/limits/limiters.NewRate in goroutine 1
	github.com/foxcpp/maddy/internal/limits/limiters/rate.go:58 +0xf5

goroutine 37 gp=0xc00042a8c0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc601d?, 0x1?, 0xa4?, 0xa9?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a2738 sp=0xc0000a2718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a27c8 sp=0xc0000a2738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a27e0 sp=0xc0000a27c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a27e8 sp=0xc0000a27e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 38 gp=0xc00042aa80 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4690?, 0x1?, 0xd8?, 0xa3?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a2f38 sp=0xc0000a2f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a2fc8 sp=0xc0000a2f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a2fe0 sp=0xc0000a2fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a2fe8 sp=0xc0000a2fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 39 gp=0xc00042ac40 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc3022?, 0x3?, 0x6c?, 0x3f?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a3738 sp=0xc0000a3718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a37c8 sp=0xc0000a3738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a37e0 sp=0xc0000a37c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a37e8 sp=0xc0000a37e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 40 gp=0xc00042ae00 m=nil [GC worker (idle)]:
runtime.gopark(0x1f1a760?, 0x3?, 0xb0?, 0x71?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a3f38 sp=0xc0000a3f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a3fc8 sp=0xc0000a3f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a3fe0 sp=0xc0000a3fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a3fe8 sp=0xc0000a3fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 41 gp=0xc00042afc0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4796?, 0x1?, 0xdd?, 0x20?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a4738 sp=0xc0000a4718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a47c8 sp=0xc0000a4738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a47e0 sp=0xc0000a47c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a47e8 sp=0xc0000a47e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 42 gp=0xc00042b180 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4ab4?, 0x3?, 0x64?, 0xb2?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a4f38 sp=0xc0000a4f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a4fc8 sp=0xc0000a4f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a4fe0 sp=0xc0000a4fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a4fe8 sp=0xc0000a4fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 43 gp=0xc00042b340 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc3da9?, 0x3?, 0xcd?, 0x1e?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a5738 sp=0xc0000a5718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a57c8 sp=0xc0000a5738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a57e0 sp=0xc0000a57c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a57e8 sp=0xc0000a57e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 44 gp=0xc00042b500 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc3654?, 0x1?, 0xb9?, 0x3b?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc0000a5f38 sp=0xc0000a5f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0000a5fc8 sp=0xc0000a5f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0000a5fe0 sp=0xc0000a5fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0000a5fe8 sp=0xc0000a5fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 45 gp=0xc00042b6c0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc37f6?, 0x3?, 0x98?, 0xd?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000460738 sp=0xc000460718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0004607c8 sp=0xc000460738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0004607e0 sp=0xc0004607c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0004607e8 sp=0xc0004607e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 46 gp=0xc00042b880 m=nil [GC worker (idle)]:
runtime.gopark(0x1f1a760?, 0x3?, 0x67?, 0x85?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000460f38 sp=0xc000460f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc000460fc8 sp=0xc000460f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc000460fe0 sp=0xc000460fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc000460fe8 sp=0xc000460fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 47 gp=0xc00042ba40 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc48c3?, 0x3?, 0x55?, 0xaf?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000461738 sp=0xc000461718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0004617c8 sp=0xc000461738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0004617e0 sp=0xc0004617c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0004617e8 sp=0xc0004617e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 48 gp=0xc00042bc00 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc5277?, 0x3?, 0xaf?, 0x1?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000461f38 sp=0xc000461f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc000461fc8 sp=0xc000461f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc000461fe0 sp=0xc000461fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc000461fe8 sp=0xc000461fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 49 gp=0xc00042bdc0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc2b0c?, 0x3?, 0x36?, 0xbc?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000462738 sp=0xc000462718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0004627c8 sp=0xc000462738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0004627e0 sp=0xc0004627c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0004627e8 sp=0xc0004627e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 50 gp=0xc000464000 m=nil [GC worker (idle)]:
runtime.gopark(0x1f1a760?, 0x3?, 0xb5?, 0xd3?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000462f38 sp=0xc000462f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc000462fc8 sp=0xc000462f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc000462fe0 sp=0xc000462fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc000462fe8 sp=0xc000462fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 51 gp=0xc0004641c0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc46ff?, 0x1?, 0xd8?, 0x88?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000463738 sp=0xc000463718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc0004637c8 sp=0xc000463738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc0004637e0 sp=0xc0004637c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc0004637e8 sp=0xc0004637e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 52 gp=0xc000464380 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc8849?, 0x3?, 0xcd?, 0x45?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc000463f38 sp=0xc000463f18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc000463fc8 sp=0xc000463f38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc000463fe0 sp=0xc000463fc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc000463fe8 sp=0xc000463fe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 53 gp=0xc000464540 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4995?, 0x1?, 0x3a?, 0x50?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045c738 sp=0xc00045c718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045c7c8 sp=0xc00045c738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045c7e0 sp=0xc00045c7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045c7e8 sp=0xc00045c7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 54 gp=0xc000464700 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4617?, 0x1?, 0x9e?, 0xa4?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045cf38 sp=0xc00045cf18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045cfc8 sp=0xc00045cf38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045cfe0 sp=0xc00045cfc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045cfe8 sp=0xc00045cfe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 55 gp=0xc0004648c0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc43ba?, 0x3?, 0xde?, 0xc4?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045d738 sp=0xc00045d718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045d7c8 sp=0xc00045d738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045d7e0 sp=0xc00045d7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045d7e8 sp=0xc00045d7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 56 gp=0xc000464a80 m=nil [GC worker (idle)]:
runtime.gopark(0x1f1a760?, 0x3?, 0x2b?, 0x99?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045df38 sp=0xc00045df18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045dfc8 sp=0xc00045df38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045dfe0 sp=0xc00045dfc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045dfe8 sp=0xc00045dfe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 57 gp=0xc000464c40 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc3e99?, 0x1?, 0xb7?, 0xd5?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045e738 sp=0xc00045e718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045e7c8 sp=0xc00045e738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045e7e0 sp=0xc00045e7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045e7e8 sp=0xc00045e7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 58 gp=0xc000464e00 m=nil [GC worker (idle)]:
runtime.gopark(0x1f1a760?, 0x3?, 0x5a?, 0xa3?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045ef38 sp=0xc00045ef18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045efc8 sp=0xc00045ef38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045efe0 sp=0xc00045efc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045efe8 sp=0xc00045efe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 59 gp=0xc000464fc0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc482f?, 0x1?, 0x49?, 0x1b?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045f738 sp=0xc00045f718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045f7c8 sp=0xc00045f738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045f7e0 sp=0xc00045f7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045f7e8 sp=0xc00045f7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 60 gp=0xc000465180 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dcb589?, 0x1?, 0xc8?, 0xbe?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00045ff38 sp=0xc00045ff18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00045ffc8 sp=0xc00045ff38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00045ffe0 sp=0xc00045ffc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00045ffe8 sp=0xc00045ffe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 61 gp=0xc000465340 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc4606?, 0xc0003e6e40?, 0x1a?, 0xa?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00046a738 sp=0xc00046a718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00046a7c8 sp=0xc00046a738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00046a7e0 sp=0xc00046a7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00046a7e8 sp=0xc00046a7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 62 gp=0xc000465500 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce073be55e4a?, 0x1?, 0x88?, 0xd6?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00046af38 sp=0xc00046af18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00046afc8 sp=0xc00046af38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00046afe0 sp=0xc00046afc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00046afe8 sp=0xc00046afe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 63 gp=0xc0004656c0 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc2ab6?, 0x3?, 0x53?, 0x24?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00046b738 sp=0xc00046b718 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00046b7c8 sp=0xc00046b738 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00046b7e0 sp=0xc00046b7c8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00046b7e8 sp=0xc00046b7e0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 64 gp=0xc000465880 m=nil [GC worker (idle)]:
runtime.gopark(0x2ce0760dc6900?, 0x3?, 0xa1?, 0x12?, 0x0?)
	runtime/proc.go:424 +0xce fp=0xc00046bf38 sp=0xc00046bf18 pc=0x473cee
runtime.gcBgMarkWorker(0xc000348380)
	runtime/mgc.go:1412 +0xe9 fp=0xc00046bfc8 sp=0xc00046bf38 pc=0x41f269
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1328 +0x25 fp=0xc00046bfe0 sp=0xc00046bfc8 pc=0x41f145
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00046bfe8 sp=0xc00046bfe0 pc=0x47c3e1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1328 +0x105

goroutine 65 gp=0xc000465a40 m=nil [select]:
runtime.gopark(0xc00046c778?, 0x2?, 0x70?, 0x0?, 0xc00046c76c?)
	runtime/proc.go:424 +0xce fp=0xc00046c608 sp=0xc00046c5e8 pc=0x473cee
runtime.selectgo(0xc00046c778, 0xc00046c768, 0x0?, 0x0, 0x0?, 0x1)
	runtime/select.go:335 +0x7a5 fp=0xc00046c730 sp=0xc00046c608 pc=0x4511c5
github.com/foxcpp/maddy/internal/smtpconn/pool.(*P).cleanUpTick(0xc000335900, 0xc0003483f0)
	github.com/foxcpp/maddy/internal/smtpconn/pool/pool.go:81 +0xcb fp=0xc00046c7c0 sp=0xc00046c730 pc=0xfc46ab
github.com/foxcpp/maddy/internal/smtpconn/pool.New.gowrap1()
	github.com/foxcpp/maddy/internal/smtpconn/pool/pool.go:70 +0x25 fp=0xc00046c7e0 sp=0xc00046c7c0 pc=0xfc45a5
runtime.goexit({})
	runtime/asm_amd64.s:1700 +0x1 fp=0xc00046c7e8 sp=0xc00046c7e0 pc=0x47c3e1
created by github.com/foxcpp/maddy/internal/smtpconn/pool.New in goroutine 1
	github.com/foxcpp/maddy/internal/smtpconn/pool/pool.go:70 +0x13d

Configuration file

state_dir /data/state
runtime_dir /cache/run

$(hostname) = {env:MADDY_HOSTNAME}
$(primary_domain) = {env:MADDY_DOMAIN}
$(local_domains) = $(primary_domain) imagegenius.io ${D_SN} ${D_TACA} ${D_TAN} ${D_LMVCA} ${D_BBPC}
$(external_domains) = ${D_HCA}
$(sender_domains) = $(local_domains) $(external_domains)

tls file /certs/tls.crt /certs/tls.key

auth.pass_table local_authdb {
  table sql_table {
    driver sqlite3
    dsn /data/credentials.db
    table_name passwords
  }
}

storage.imapsql local_mailboxes {
  driver sqlite3
  dsn /data/imapsql.db
}

hostname $(hostname)

msgpipeline local_routing {
  check {
    require_mx_record
    dkim
    spf
  }
  destination postmaster $(local_domains) {
    modify {
      replace_rcpt regexp "(.+)\+(.+)@(.+)" "$1@$3"
      replace_rcpt file /data/aliases
    }
    reroute {
      destination postmaster $(local_domains) {
        deliver_to &local_mailboxes
      }
      default_destination {
        deliver_to &remote_queue
      }
    }
  }
  default_destination {
    reject 550 5.1.1 "User doesn't exist"
  }
}

smtp tcp://0.0.0.0:{env:SMTP_PORT} {
  limits {
    all rate 50 1s
    all concurrency 20
  }
  source $(sender_domains) {
    reject 501 5.1.8 "Use Submission for outgoing SMTP"
  }
  default_source {
    destination postmaster $(local_domains) {
      deliver_to &local_routing
    }
    default_destination {
      reject 550 5.1.1 "User doesn't exist"
    }
  }
}

submission tls://0.0.0.0:{env:SUBMISSIONS_PORT} tcp://0.0.0.0:{env:SUBMISSION_PORT} {
  limits {
    all rate 50 1s
  }
  auth &local_authdb
  source $(sender_domains) {
    destination postmaster $(local_domains) {
      deliver_to &local_routing
    }
    default_destination {
      modify {
        dkim $(sender_domains) default
      }
      deliver_to &remote_queue
    }
  }
  default_source {
    reject 501 5.1.8 "Non-local sender domain"
  }
}

target.remote outbound_delivery {
  limits {
    destination rate 20 1s
    destination concurrency 10
  }
  mx_auth {
    dane
    mtasts {
      cache fs
      fs_dir mtasts_cache/
    }
    local_policy {
      min_tls_level encrypted
      min_mx_level none
    }
  }
}

target.queue remote_queue {
  target &outbound_delivery
  autogenerated_msg_domain $(primary_domain)
  bounce {
    destination postmaster $(local_domains) {
      deliver_to &local_routing
    }
    default_destination {
      reject 550 5.0.0 "Refusing to send DSNs to non-local addresses"
    }
  }
}

imap tls://0.0.0.0:{env:IMAPS_PORT} tcp://0.0.0.0:{env:IMAP_PORT} {
  auth &local_authdb
  storage &local_mailboxes
}

Environment information

ghcr.io/foxcpp/maddy on Kubernetes 1.35.3

Additional deployment context:
https://github.com/hydazz/home-ops/blob/main/kubernetes/apps/self-hosted/maddy/app/helmrelease.yaml

  • maddy version: 0.9.0+

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions