运行时postfix logrotate
,我收到错误fatal: empty 'maillog_file' parameter value. logrotation failed.
There is returned of logrotate the main.cf document但我不明白需要添加什么,或者这是否是解决方案所在。
我还尝试在 /etc/logrotate.d/ 中添加后缀文件,但这并没有解决问题。
Postfix的虚拟别名表格式在某些条件下赋予前导空格特殊的含义:
multi-line text
A logical line starts with non-whitespace text. A line that
starts with whitespace continues a logical line.
在此示例之后,我在这些文件中有很多条目。特别是对于多个不同的行,前缀a
具有不同的长度。
# Some comment...
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
为了使事情更具可读性,我希望使用以下相同条目的布局:
# Some comment...
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
或者有时使用不同顺序的相同方法。虽然,前一个例子在理论上会更常见。
# Some comment...
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
[email protected] recipient
因此,真正的区别只是添加前导空格以使内容更具可读性。至少在第二个示例中,根据文档,前导空格将被识别为前几行的延续,这在我的情况下是错误的。
但是第一个例子是如何处理的呢?理论上从来没有起始逻辑行,但行也不是空的、空格或仅注释。
一般来说,有什么方法可以配置/...后缀,前导空格总是被忽略并且从不用于继续?
如果当前的 Postfix 实现根本不可能,我会接受。只是想确保我没有遗漏任何东西。
谢谢!
我们有一个在 Debian 10 上运行 Postfix (SMTP) 和 Dovecot (POP/IMAP) 的电子邮件服务器。用户不能直接登录它 (SSH),但可以通过 NFS 访问他们的家。
我们想使用 Procmail 对被 SpamAssassin(X-Spam-Flag: YES
标头)标记为垃圾邮件的邮件进行排序,并使用全局文件在每个用户的单独文件夹中/etc/procmailrc
。这似乎很容易做到,如https://serverfault.com/questions/488044/send-spam-mail-to-a-special-folder-using-postfix所示,举个例子。
$HOME/.procmailrc
问题是:出于安全原因,我们不想让我们的用户使用文件。有没有办法阻止 Procmail$HOME/.procmailrc
为大多数用户激活,除了一些受信任的用户?
编辑:
考虑到三人组的回答,我可以编写一个/etc/procmailrc
包含特权用户测试的文件(即允许拥有本地.procmailrc
文件的用户),如下所示:
# /etc/procmailrc
# if the e-mail is flagged as spam, deliver it to $JUNK and stop
:0:
* ^X-Spam-Flag: YES
$JUNK
# if the user is NOT allowed to have a $HOME/.procmailrc,
# then deliver the message to the default mailbox and stop
:0W:
# check whether the user is allowed to have a .procmailrc file
* ! ? check_allowed_user $LOGNAME
$DEFAULT
# else, do nothing (and $HOME/.procmailrc will be activated)
你认为这是要走的路吗?如果是这样,我只需要找到一种简单而可靠的方法来进行check_allowed_user
测试。
我最近在 Ubuntu 18.04.3 LTS 虚拟机上安装了postfix 3.3.0 。
为了测试安装,我使用了开箱即用的配置,这意味着我还没有更改任何内容。只有在安装过程中,我才选择Internet site
并插入了我的 fqdn example.com
。我希望能够在我的域之间发送和传递电子邮件。简单地说,一台服务器可以处理所有邮件。
假设我的域名是example.com
.
我可以成功发送电子邮件。我试图sendmail [email protected]
从我的服务器发送电子邮件。在我的 gmail 收件箱中,我可以看到发件人地址是[email protected]
. 发送部分似乎一切正常。
我还可以收到来自我测试过的一些地址的电子邮件。从登录日志可以看出/var/log/mail.log
:
Nov 11 21:57:44 mail postfix/smtpd[24956]: connect from f175.i.mail.ru[94.100.178.161]
Nov 11 21:57:44 mail postfix/smtpd[24956]: EB5DA459A4: client=f175.i.mail.ru[94.100.178.161]
Nov 11 21:57:45 mail postfix/cleanup[24959]: EB5DA459A4: message-id=<[email protected]>
Nov 11 21:57:45 mail postfix/qmgr[24610]: EB5DA459A4: from=<[email protected]>, size=2917, nrcpt=1 (queue active)
Nov 11 21:57:45 mail postfix/local[24960]: EB5DA459A4: to=<[email protected]>, relay=local, delay=0.09, delays=0.08/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Nov 11 21:57:45 mail postfix/qmgr[24610]: EB5DA459A4: removed
Nov 11 21:57:45 mail postfix/smtpd[24956]: disconnect from f175.i.mail.ru[94.100.178.161] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
问题是,我无法接收来自 gmail 的邮件。当我从我的 gmail 帐户向 发送电子邮件时[email protected]
,几秒钟后,以下日志会出现在我的服务器中:
Nov 12 08:30:25 mail postfix/smtpd[28230]: connect from mail-wr1-f44.google.com[209.85.221.44]
Nov 12 08:30:25 mail postfix/smtpd[28230]: NOQUEUE: reject: RCPT from mail-wr1-f44.google.com[209.85.221.44]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-wr1-f44.google.com>
Nov 12 08:30:25 mail postfix/smtpd[28230]: disconnect from mail-wr1-f44.google.com[209.85.221.44] ehlo=2 starttls=1 mail=1 rcpt=0/1 data=0/1 quit=1 commands=5/7
我想了解的是,这是我这边的配置问题,还是这个错误发生在 gmail 服务器中,然后转发到我的服务器让我知道?
我该如何尝试解决这个问题?
什么是最小、最干净的工作配置,我可以使用它来向所有其他外部邮件服务器发送和传递,就像普通邮件服务器一样可以工作?
根据要求,这里是/etc/postfix/main.cf
:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
mydomain = example.com
myhostname = mail.$mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, $mydomain, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
如您所见,到目前为止,我对默认配置所做的唯一mydomain
更改是对、和变量myorigin
,如上所示。问题完全一样。myhostname
mydestination
编辑 2
这是/etc/postfix/master.cf
文件(我没有编辑它):
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
#submission inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - y - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
我的 postfix 不会将 AUTH PLAIN 发送到传出中继服务器。它必须在几天前工作,但现在我收到“不允许中继”的退回邮件。
邮件系统使用 postfix、fetchmail 和 dovecot 在 Alpine Linux VM 中运行。Postfix 使用 Cyrus SASL 库,而不是 dovecot 库。
main.cf 的相关部分:
relayhost = [RELAY_HOST]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/mailsrv/etc/postfix/sasl_passwd
smtp_sasl_security_options =
sasl_passwd:
[RELAY_HOST] USER:PASSWORD
我使用 tcpdump 捕获了一个传出会话,并且没有发送 AUTH PLAIN。我使用正确的 AUTH PLAIN 行测试了通过 telnet 手动发送邮件,它工作正常。
所以我的解释是,后缀在某些时候不会决定使用 SASL / AUTH PLAIN。
可能是什么问题呢?
权限应该没问题,postmap 已被调用,postfix 重新启动并重新加载,libsasl 已安装并且 postfix 报告已使用 cyrus 构建。我知道这是陈词滥调,但该系统几天前可以正常工作。某些证书到期是否可能是一个问题,我在日志中没有看到?
从昨天开始,我的 Postfix 停止工作:它不再接收任何电子邮件(来自其他电子邮件地址,不是我自己的)。mail.log 或 mail.err 中没有任何内容。昨天我在我的 Ubuntu 上安装了 fail2ban,进行了更新和升级,并使用 fail2ban 安装了 sendmail,这是一个错误,我再次删除了 sendmail。但现在我无法让后缀工作。当我得到它的状态时,它说
root@vps219158:/etc/init.d# sudo systemctl status postfix.service
* postfix.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
当我尝试重新启动它时
Failed to restart postfix.service: Unit postfix.service is masked.
我不明白为什么它被屏蔽。
Fail2ban 已停用,我还检查了 iptables:Nothing 被禁止。当我从我的其他 3 个电子邮件帐户(@hotmail.com 等)中的任何一个向我的电子邮件帐户发送电子邮件时,它不会报告无法发送邮件 - 它们只是不会出现在我的收件箱中(即不在服务器上,“邮件”命令显示没有新邮件)。
我还能测试什么?什么可能导致这个问题?
编辑:状态是:从外部,SMTP 连接失败。Postfix 说它正在运行。mail.log/err 中没有任何内容。它一直运行到昨天。在 localhost 上,我可以远程登录到“localhost 25”并发送邮件,但它不会到达我的收件箱(对于 ehlo mydomain.com 和 ehlo localhost 也是如此)。
提前感谢您的帮助!