标签 postfix 下的文章

在 Debian 11 里 为 postfix 设置多实例运行 且 使用 saslauthd pam 认证

目标:因需设置每个 postfix 实例使用指定的 公网 IP地址,所以通过 postmulti 来创建新实例,且使用 asalauth pam 来认证用户。

步骤:

  1. postmulti -e create -I postfix-8 # 创建新的 postfix 实例,实例名为 postfix-8
  2. vi /etc/postfix-8/main.cf # 修改配置内容,如添加不同的 myhostname 和 inet_interfaces

    master_service_disable =
    myhostname = test8.example.com
    inet_interfaces = 1.1.1.1
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    broken_sasl_auth_clients = yes
  3. cp -a /etc/postfix/sasl /etc/postfix-8/ 和 mkdir /var/spool/postfix-8/etc && mount --bind /var/spool/postfix/etc /var/spool/postfix-8/etc # 将默认实例的 sasl 配置目录(中的 smtpd.conf)复制到新的实例配置目录中
  4. postmulti -i postfix-8 -e enable # 启用 postfix-8 新实例
  5. 挂载 chroot 环境里可用的 sock 路径:

    mkdir /var/spool/postfix-8/var
    mount --bind /var/spool/postfix/var /var/spool/postfix-8/var
  6. postmulti -i postfix-8 -p start # 启动 postfix-8 新实例

参考:

在 debian 11 里,为 postfix 配置 saslauthd pam 验证 用户名和密码

目标:在 debian 11 系统里,安装 postfix ,且配置 saslauthd pam 验证用户登录。

步骤:

  1. hostnamectl set-hostname my.example.com # 设置主机名
  2. 127.0.0.1 my.example.com # 在 /etc/hosts 里添加一行,保存主机名配置
  3. apt install postfix sasl2-bin libsasl2-modules # 安装 postfix , sasl 框架
    在弹出的 postfix 配置框时,选择 Internet Site ,表示 机子将直接发送和收取邮件;System mail name 会自动显示在第一步时设置的,保持不变就行
  4. 因为 postfix 默认运行在 chroot 环境中,所以要创建一个 saslauthd 跟它搭配
    4.1 创建配置文件:/etc/postfix/sasl/smtpd.conf 内容如下:

    pwcheck_method: saslauthd
    mech_list: CRAM-MD5 DIGEST-MD5 LOGIN PLAIN

    4.2 cp /etc/default/saslauthd /etc/default/saslauthd-postfix 复制默认的配置文件内容,且修改成如下内容:

    START=yes
    DESC="SASL Authentication for postfix"
    NAME="saslauthd-postf"
    MECHANISMS="pam"
    MECH_OPTIONS=""
    THREADS=5
    OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

    4.3 设置目录的权限:dpkg-statoverride --add root postfix 710 /var/spool/postfix/var/run/saslauthd

  5. 修改 /etc/postfix/main.cf 文件内容,确保有以下 sals 相关的内容:

    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    broken_sasl_auth_clients = yes
  6. systemctl restart postfix # 重启 postfix 服务
  7. 顺利的话,就可以使用普通用户发出邮件的,如:
    swaks --to he@example.com --from wuhan@example.com --server localhost --auth LOGIN --auth-user wuhan --auth-password yourpassword

参考:https://wiki.debian.org/PostfixAndSASL

接收到的邮件 - Received Mails - 为空 - No incoming mails - content_filter - postfix - iRedMail

现象:用户将iRedMail升级到Pro版本后,在邮局管理后台面板里,“活动” --> “接收到的邮件”页面中,列表是空的。但“发送的邮件”页面却有。

尝试:检查postfix的配置文件main.cf,是否注释了 content_filter = smtp-amavis:[127.0.0.1]:10024 这一行。

“接收到的邮件”页面为空
“接收到的邮件”页面有内容了

感谢张老板指导。

iredmail - 手动删除用户的默认目录 - 批量删除邮件

需求:邮件塞满了磁盘的inodes。无需备份,直接强制删除所有用户的邮件。

尝试:

#!/bin/bash

# 先停止postfix
/usr/bin/systemctl stop postfix

# 导出用户名单到文件
doveadm user *@* > /run/mailtmp.txt
# 从文件每行读取用户名,再根据用户名得到用户默认存储目录,如 /var/vmail/vmail1/example.com/z/z/9/zz9976-2023.04.19.20.47.38/ ,最后删除相应的目录
cat /run/mailtmp.txt | while read LINE; do
    su -s /bin/bash vmail -c "rm -rf `doveadm user -f home $LINE`"
done

/usr/bin/systemctl start postfix

参考:

iRedMail - queue file size limit exceeded - message_size_limit

问题:iRedMail 的邮局用户,收取不到 netflix 的邮件。日志显示 queue file size limit exceeded 。

尝试:注释 /etc/postfix/main.cf 里的一行 message_size_limit =8640 。原因可能是 iRedMail 的邮件大小默认值过小。注释掉后,posfix的默认值是 10240000 (10MB)。

参考: