我已经在我的 CentOS 机器上安装了 Postfix。我可以很好地使用 将邮件发送到本地帐户mutt,但是当我尝试将邮件发送到 myactualmail@gmail.com 之类的远程邮件时,我不明白为什么我无法接收任何内容。这是我的main.cf:
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = server.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.200.0/24, 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = …Run Code Online (Sandbox Code Playgroud) CentOS 7 Web 服务器安装了 postfix、dovecot 和 mailx。我已经能够与服务器建立 IMAP 连接,以便使用远程 Thunderbird 客户端读取收件箱邮件,但我无法建立 SMTP 连接以从 Thunderbird 发送电子邮件。当我进行取证时,我发现尝试的 SMTP 连接超时。 如何解决连接超时的问题,以便我可以通过服务器从 Thunderbird 发送电子邮件?
到目前为止,我的取证结果是:
hostname在服务器的终端中键入返回mydomain.com。
nano /usr/lib/firewalld/services/smtp.xml 表示 smtp 端口为 25
smtp 服务在公共区域被激活,因为firewall-cmd --list-all结果:
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client imaps openvpn smtp
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从我的 devbox telnet 到远程 CentOS 7 服务器时,我得到以下结果。打字telnet mydomain.com 25导致:
Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out
Run Code Online (Sandbox Code Playgroud)
然后输入telnet smtp.mydomain.com 25结果: …
我正在尝试使用 postfix 和 dbmail 通过我的 freebsd 服务器向外部地址发送电子邮件。
我注意到以下几点:
MYSERVER -> MYSERVER = OKAY
外部服务器 -> MYSERVER = OKAY
MYSERVER -> EXTERNALSERVER = 错误(454 4.7.1 中继访问被拒绝)
为什么我会收到这个错误?我认为这与我的 main.cf 有关
####MAIN.CF######
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
default_privs = nobody
myhostname = server.domain.nl
mydomain = domain.nl
myorigin = $mydomain
inet_interfaces = all
virtual_transport = dbmail-lmtp:localhost:24
virtual_mailbox_domains = domain.nl
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8 [::1]/128
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
debug_peer_level = …Run Code Online (Sandbox Code Playgroud) 我有一个 postfix 服务器,它可以发送邮件并将外发邮件的副本发送到第二台服务器以使用以下配置进行内容分析(地址和 IP 已被替换):
main.cf 内容
sender_bcc_maps = pcre:/$config_directory/sender_bcc
Run Code Online (Sandbox Code Playgroud)
sender_bcc 内容
/^(.*)@(.*)$/ ${1}@tst.example.com
Run Code Online (Sandbox Code Playgroud)
transport_maps 内容
tst.example.com smtp:[192.168.1.1]
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的配置没有保留信封,所以我没有在第二台服务器上获得原始收件人。拥有原始收件人的目标是捕获密件抄送。有没有办法只通过配置 Postfix 来做到这一点?一个好的结果的例子是让后缀添加类似的东西
x-bcc: test@example.com
or
x-original-recipient: test@example.com
Run Code Online (Sandbox Code Playgroud)
到发送到第二台服务器的电子邮件标头(并且只有它们。显然,我们不想在发送给用户的电子邮件中添加密件抄送标头或类似内容)。
我到处找,没有找到任何可以添加原始收件人的内容。也许还有其他方法?欢迎提出任何达到最终目标的建议!
如何配置 Postfix 以静默丢弃/丢弃从我的一个用户发送到外部地址的邮件?
我已经能够使用以下 transport_maps 丢弃所有发往外部地址的邮件
example.com :
* discard:
Run Code Online (Sandbox Code Playgroud)
但是,我只想将此规则应用于 Postfix 服务器中的一个用户。
此外,寄往外部和本地地址的邮件应该只发送给本地用户。
我工作的公司认为实习生不应该直接向客户发送邮件。因此,实习生将使用客户地址发送一封邮件to,并将其主管添加到cc. 那么Postfix应该只将邮件投递给主管,这样他就可以在不搜索客户地址的情况下检查并将邮件发送给客户。
我正在使用 Ubuntu 12.04,后缀配置为卫星系统,将外发邮件中继到 Gmail。例如,我的注册域是 example.com 我希望 root cronjobs 的错误输出被邮寄到我真正的 david@example.com 收件箱。我让这个继电器正常工作。
但是这些 root cronjobs 默认设置为通过电子邮件发送到 root@example.com,这不是真正的电子邮件地址。我在我的/etc/aliases:
root: david@example.com
Run Code Online (Sandbox Code Playgroud)
example.com 未在 postfix 的 main.cf 中列出,mydestination因此 postfix 认为此邮件不是本地邮件。它绕过通过处理/etc/aliases并尝试发送到 root@example.com。
解决方法是MAILTO=david在每个 cron 文件的顶部添加。但是有很多。另一种解决方法是将 root@example.com 设置为转发到 david@example.com 的真实收件箱。有没有更好的办法?即有没有办法中继具有本地域但仍使用/etc/aliases?
在 Ubuntu 上运行 Postfix 时,我在一个帐户中获得了许多测试电子邮件usr1,现在我想在开始其他测试之前将其删除。但是,每次我尝试同时使用d #“删除 #”和“删除 #”进行删除时,都没有任何反应。
例子:
usr1@usr1:~$ mail
"/var/mail/usr1": 5 messages 5 unread
>U 1 usr2 Tue Apr 30 15:54 19/478 Testing local mail
U 2 Mail Delivery Syst Tue Apr 30 15:54 78/2433 Undelivered Mail Returned to Sender
U 3 usr2 Tue Apr 30 15:55 19/614 Re: Testing local mail
U 4 usr2 Tue Apr 30 15:55 19/604 Re: Testing local mail
U 5 Mail Delivery Syst Tue Apr 30 15:55 73/2219 …Run Code Online (Sandbox Code Playgroud) 我的邮件服务器上有Postfix+ Maildir+ Dovecot+ IMAP。我正在通过IMAP一个或多个客户端 (Thunderbird)远程访问我的邮箱。此外,在服务器上,我为本地 ( Maildir) 访问配置了 mutt 。
当我IMAP与 Thunderbird连接并同时mutt在服务器上本地启动时,Mutt似乎很困惑。当我在 Thunderbird (over IMAP) 中移动消息时,Mutt注意到某些内容发生了变化并报告:
Mailbox was externally modified. Flags may be wrong
Run Code Online (Sandbox Code Playgroud)
问题似乎是片面的。当我在 中操作消息时Mutt,Thunderbird 会注册更改并且没有问题。
因此我的问题:
如何在没有任何冲突/数据损坏/错误的情况下进行远程IMAP客户端和本地Mutt客户端访问Maildir?
重要的:
我正在寻找一种Mutt本地访问的解决方案。出于本讨论之外的原因,我不想Mutt通过以下方式访问 MaildirIMAP.
边注:
我不明白为什么Mutt抱怨邮箱被外部修改。毕竟,Postfix 在发送新邮件时也会修改邮箱。
我正在尝试为一个古怪的旧语音邮件系统设置邮件中继。我在 vm 上设置了 postfix,启用了中继,验证了我可以从同一子网 telnet 到端口 25 并在我想要的任何地方发送邮件。这是我的 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 = …Run Code Online (Sandbox Code Playgroud) 我正在使用 CentOS 7。我想测试我的 PostFix 邮件转发,所以我运行
[root@server /]# echo "Subject: sendmail test" | sendmail -v admin@mydomein.com
Mail Delivery Status Report will be mailed to <root>.
Run Code Online (Sandbox Code Playgroud)
我没有看到我的转发地址收到的电子邮件,也无法弄清楚所发生事件的日志在哪里。我检查了
[root@server /]# ls -al /var/log/maillog
-rw------- 1 root root 0 Mar 6 09:48 /var/log/maillog
Run Code Online (Sandbox Code Playgroud)
但该日志文件是空的。我如何找出哪里出了问题?