首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sendmail和mimedefang都以非权限用户的身份运行时出现的问题

sendmail和mimedefang都以非权限用户的身份运行时出现的问题
EN

Server Fault用户
提问于 2011-03-03 16:51:17
回答 2查看 1.8K关注 0票数 1

我试图实现一个反垃圾邮件解决方案,并根据我在这里得到的建议,从回答我的其他问题,我决定选择sendmail+mimedefang+spamassassin。

但目前我遇到了非常简单的权限问题:

  1. 默认情况下,MIMEdefang以" defang“用户的身份运行,因此它使用以下权限创建它的套接字:srwxr-x--1 DefangDefang0Mar3.316:42 /var/spool/MIMEDefang/mimedefang.sock
  2. 如果sendmail作为root运行,那么没有问题,但是如果它是作为非特权用户运行的,那么它会抱怨mimedefang套接字: NOQUEUE: SYSERR(root):/etc/mail/sendmail.cf:第1870行: Xmimedefang:本地套接字名称//spool/MIMEDefang/mimedefang.sock:权限被拒绝

我已经尝试过以下解决这个问题的方法:

  1. 以root用户身份运行sendmail。工作正常,但这是相当不可接受的,因为我希望避免将守护进程作为root运行。
  2. 运行sendmail作为defang或运行mimedefang作为同一个用户与sendmail。看起来不错,但也希望避免这种情况,因为配置文件、目录等太多,这需要更改权限和/或所有权,因此整个过程都很容易出错。
  3. 只需更改套接字文件的权限,但每次mimedefang启动时都会重新创建它。我可以在/etc/init.d中相应地修改相应的脚本,但也不能避免这一点,因为我的更改可能会随着这些包的未来更新而松动。

你能提出其他解决办法吗?在与权限相关的sendmail或mimedefang中是否有可用的选项?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-03-04 09:19:38

每当需要进程以另一个用户的身份运行(smmsp、smmta等)时,Sendmail都会以root和叉的形式运行。因此,是的,运行它作为根,并确保您正在运行的最新版本。如果您想以非根用户的身份运行sendmail,请将该用户作为defang组的一部分。注意,defang组也具有套接字上的读取权限。

编辑:(在阅读了下面的注释之后),使套接字组在启动milter之前适当地读-写你必须使用umask (参见提供的链接中的Notes部分)。

票数 1
EN

Server Fault用户

发布于 2016-10-09 20:20:26

在我的例子中,我不需要设置umask来创建套接字。我只需要使用与sendmail (RunAsUidRunAsGid)相同的用户和组运行opendkim,并使用带有600权限(S_IRUSR|S_IWUSR)的套接字目录。

您可以在sendmail源代码1中检查它:

  • 发送邮件/英里c
代码语言:javascript
运行
复制
errno = safefile(colon, RunAsUid, RunAsGid, RunAsUserName, sff,
         S_IRUSR|S_IWUSR, NULL);
...
else if (errno != 0)
{
    /* if not safe, don't create */
    save_errno = errno;
    if (tTd(64, 5))
        sm_dprintf("X%s: local socket name %s unsafe\n",
            m->mf_name, colon);
  • libsmutil/safefile.c
代码语言:javascript
运行
复制
/*
**  SAFEFILE -- return 0 if a file exists and is safe for a user.
**
**  Parameters:
**      fn -- filename to check.
**      uid -- user id to compare against.
**      gid -- group id to compare against.
**      user -- user name to compare against (used for group
**          sets).
**      flags -- modifiers:
**          SFF_MUSTOWN -- "uid" must own this file.
**          SFF_NOSLINK -- file cannot be a symbolic link.
**      mode -- mode bits that must match.
**      st -- if set, points to a stat structure that will
**          get the stat info for the file.
**
**  Returns:
**      0 if fn exists, is owned by uid, and matches mode.
**      An errno otherwise.  The actual errno is cleared.
**
**  Side Effects:
**      none.
*/

int
safefile(fn, uid, gid, user, flags, mode, st)

1:ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.15.2.tar.gz

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/242817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档