自从将 Gentoo 盒子从 postfix 2.5.5 升级到 2.6.6 后,本地邮件传递不再起作用。虚拟邮箱仍然有效。
以下是日志:
Jul 14 13:07:05 weser postfix/master[15825]: warning: process /usr/lib/postfix/local pid 20065 killed by signal 11
Jul 14 13:07:05 weser postfix/master[15825]: warning: /usr/lib/postfix/local: bad command startup -- throttling
Jul 14 13:07:05 weser postfix/qmgr[15829]: warning: private/local socket: malformed response
Jul 14 13:07:05 weser postfix/qmgr[15829]: warning: transport local failure -- see a previous warning/fatal/panic logfile record for the problem description
Jul 14 13:07:05 weser postfix/error[20067]: 5D2A3466D56C: to=<[email protected]>, orig_to=<[email protected]>, relay=none, delay=6.9, delays=6.7/0.05/0/0.08, dsn=4.3.0, status=deferred (unknown mail transport error)
weser.XXX.YY
本地机器在哪里。我尝试-v
打开开关local
,qmgr
但没有什么帮助。
我对如何进一步调试一无所知。尝试跟踪进程debugger_command
没有生成任何预期的输出文件。
问题:
- 我该如何进一步调试呢?
- 从 2.5 升级到 2.6 之前我应该注意什么吗?
更新:我设法获取了一个 strace 日志,看起来在从活动队列读取假脱机文件后立即发生了段错误。
更新 2:我设法获取了核心转储并创建了回溯:
#0 0x138f9469 in vstring_strcpy (vp=0x13929630, src=0x0) at vstring.c:409
#1 0x138e66d9 in dict_db_lookup (dict=0x139295b0, name=0x0) at dict_db.c:200
#2 0x138bd83e in deliver_alias (state=
{level = 1, msg_attr = {level = 0, fp = 0x1392f630, queue_name = 0x1392f520 "active", queue_id = 0x1392f248 "0658546584CA", offset = 218, encoding = 0x1390b018 "", sender = 0x1390b018 "", dsn_envid = 0x1390b018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt = 0x1390b018 "", dsn_notify = 0, orig_addr = 0x1392f5e0 "[email protected]", address = 0x1392f608 "[email protected]", u = {status = 0, queue = 0x0, addr_type = 0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0, unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5d8f4a53 "local", msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279121939, tv_usec = 42594}, agent_handoff = {tv_sec = 1279121939, tv_usec = 124639}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0, request = 0x1392eb88, why = 0x1392f700}, dup_filter = 0x13931360, loop_info = 0x1392fa18, request = 0x1392eb88}, usr_attr={uid = 0, gid = 0, home = 0x0, logname = 0x0, shell = 0x0}, name=0x0, statusp=0x5d8f3d58)
at alias.c:199
#3 0x138c3df9 in deliver_switch (state=
{level = 1, msg_attr = {level = 0, fp = 0x1392f630, queue_name = 0x1392f520 "active", queue_id = 0x1392f248 "0658546584CA", offset = 218, encoding = 0x1390b018 "", sender = 0x1390b018 "", dsn_envid = 0x1390b018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt = 0x1390b018 "", dsn_notify = 0, orig_addr = 0x1392f5e0 "[email protected]", address = 0x1392f608 "[email protected]", u = {status = 0, queue = 0x0, addr_type = 0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0, unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5d8f4a53 "local", msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279121939, tv_usec = 42594}, agent_handoff = {tv_sec = 1279121939, tv_usec = 124639}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0, request = 0x1392eb88, why = 0x1392f700}, dup_filter = 0x13931360, loop_info = 0x1392fa18, request = 0x1392eb88}, usr_attr={uid = 0, gid = 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:135
#4 0x138c4af8 in deliver_recipient (state=
{level = 1, msg_attr = {level = 0, fp = 0x1392f630, queue_name = 0x1392f520 "active", queue_id = 0x1392f248 "0658546584CA", offset = 218, encoding = 0x1390b018 "", sender = 0x1390b018 "", dsn_envid = 0x1390b018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt = 0x1390b018 "", dsn_notify = 0, orig_addr = 0x1392f5e0 "[email protected]", address = 0x1392f608 "[email protected]", u = {status = 0, queue = 0x0, addr_type = 0x0}}, domain = 0x1393145d "weser.XXX.YY", local = 0x13931458 "root", user = 0x13931480 "root", extension = 0x0, unmatched = 0x0, owner = 0x0, delivered = 0x1392f608 "[email protected]", relay = 0x5d8f4a53 "local", msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279121939, tv_usec = 42594}, agent_handoff = {tv_sec = 1279121939, tv_usec = 124639}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0, request = 0x1392eb88, why = 0x1392f700}, dup_filter = 0x13931360, loop_info = 0x1392fa18, request = 0x1392eb88}, usr_attr=
{uid = 0, gid = 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:319
#5 0x138c2246 in local_deliver (rqst=0x1392eb88, service=0x5d8f4a53 "local") at local.c:718
#6 0x138c23c5 in local_service (stream=0x1392daa8, service=0x5d8f4a53 "local", argv=0x5d8f4990) at local.c:756
#7 0x138c7c53 in single_server_wakeup (fd=14) at single_server.c:262
#8 0x138c7e1d in single_server_accept_local (unused_event=1, context=0x6 <Address 0x6 out of bounds>) at single_server.c:304
#9 0x138ed896 in event_loop (delay=-1) at events.c:1086
#10 0x138c8bd6 in single_server_main (argc=3, argv=0x5d8f4984, service=0x138c2351 <local_service>) at single_server.c:732
#11 0x138c2892 in main (argc=3, argv=0x5d8f4984) at local.c:917
答案1
/usr/lib/postfix/local
以信号 11 退出,这是段错误。这不是后缀问题,而是本地机器的问题。按可能性排序,我会检查:
- 确保您的编译选项(例如 CFLAGS)没有错乱。缩减到类似 的选项
-O2
,重新编译,然后查看是否有效。 - 同样,postfix 使用的任何库。你可以从 postfix 使用的任何库开始(因为你会看到使用损坏库的其他程序出现故障)。
- 使用以下方法测试您的 RAM:memtest86+. 让它运行一整夜。
- 测试其他硬件。