我对docker感兴趣了一段时间,但还没有跳进去.我需要设置一个邮件服务器,所以我想也许可以用它作为了解更多有关docker的理由.但是,我不清楚如何最好地去做.
我之前在VPS上安装了一个邮件服务器,但没有安装到多个容器中.我想安装Postfix,Dovecot,MySQL或Postgresql,以及SpamAssassin,类似于这里描述的内容:
但是,将它停泊的好方法是什么?我会简单地将所有东西放入一个容器中吗?或者将MySQL放在一个容器中,将Postfix放在另一个容器中,以及为Dovecot和SpamAssassin添加其他容器会更好吗?或者应该共享一些容器?
使用docker安装邮件服务器有什么HOWTO?如果有,我还没有找到它.
这让我疯了,但出于某种原因,我无法从外面访问某些端口.我几乎检查了所有可能的设置,但我不知道为什么这不起作用.我不知道在哪里解决这个问题(Ubuntu防火墙与Docker vs. Dovecot vs. Postfix),我真的希望你们能帮助我.
仅供参考:mycooldomain.com只是我域名的占位符,目前我不想分享.
我会为帮我解决这个问题的人买一杯啤酒!:)
简介
在我的根服务器上,我正在运行以下docker邮件服务器容器(https://github.com/tomav/docker-mailserver/),它暴露了几个端口(143,25,587,993).容器运行dovecot(IMAP)和后缀(SMTP).
TL;博士
我有上述邮件服务器(dovecot,postfix)在docker容器中运行,只能连接到一个端口(143 - IMAP).其他端口25,587和993无法从外部访问 - 仅可从主机直接访问.Docker正确公开它们并正确地列在iptables中.容器中的日志(dovecot,postfix)在请求进入时没有显示任何反应(没有被拒绝的请求或类似的东西),所以我想它们永远不会到达容器中的服务.其他docker容器端口(例如我的web服务器:80,443).
这是详细信息:
我可以直接从主机连接到每个端口(让我们测试IMAP安全端口):
mastix@localhost:~$ telnet mail.mycooldomain.com 993
Trying xxx.xxx.xxx.xxx…
Connected to mail.mycooldomain.com.
Escape character is '^]'.
220 mail.mycooldomain.com ESMTP Postfix (Ubuntu)
Run Code Online (Sandbox Code Playgroud)
但不是来自我的本地机器:
mastixmc$ telnet mail.mycooldomain.com 993
Trying xxx.xxx.xxx.xxx…
telnet:connect to address xxx.xxx.xxx.xxx: Operation timed out
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)
docker-compose ps告诉我他们暴露并正确绑定:
110/tcp,
0.0.0.0:143-143/tcp,
0.0.0.0:25->25/tcp, 4190/tcp,
0.0.0.0:587->587/tcp,
0.0.0.0:993->993/tcp, 995/tcp
Run Code Online (Sandbox Code Playgroud)
netstat -ntlp 告诉我同样的事情:
Proto Recv-Q Send-Q Local Address …Run Code Online (Sandbox Code Playgroud) 我有一个关于理解sha512-crypt哈希的问题.我发现本教程用mysql设置dovecot和postfix.我按照教程(略有修改),一切正常.但有一件事,我不明白:
要添加用户,我应该使用:
INSERT INTO `mailserver`.`virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('firstpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email1@example.com'),
('2', '1', ENCRYPT('secondpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'email2@example.com');
Run Code Online (Sandbox Code Playgroud)
再次,这完全正常,即我可以用我的密码(只有我的密码)登录dovecot.但为什么?如果我看到它正确,它会使用随机盐加密密码,但不会将其保存在任何地方.所以两次使用相同的密码给我两个不同的哈希值(我试过了).所以我的问题可以归结为:我能否得到sha-512(我在网上找不到)的简要说明,并解释为什么这些线路有效?
谢谢
每次我的网络服务器在特定帐户上收到电子邮件时,我都需要触发 python 脚本。我还需要将电子邮件作为参数传递给脚本。我的网络服务器正在使用 Dovecot。我该怎么做呢?
554 Relay access denied 尝试从Outlook客户端发送电子邮件时出现此错误.
我可以阅读收到的邮件,但无法发送.
如果我连接telnet localhost 25我可以发送外部电子邮件,但与Outlook客户端它不起作用.
这是我的postfix和dovecot配置:
postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_size_limit = 0
mydestination = localhost
myhostname = mail.mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = …Run Code Online (Sandbox Code Playgroud) 我正在尝试打开非安全(端口 143)IMAP 连接(我使用的是 PHP):
imap_open('{localhost:143/imap}INBOX', USERNAME, PASS);
Run Code Online (Sandbox Code Playgroud)
我得到下一个错误: Certificate failure for localhost: self signed certificate ...
好的。我试过使用/novalidate-cert邮箱参数。然后我得到另一个错误:Can not authenticate to IMAP server.
我还尝试结合所有可能的非安全连接参数,如/notls,/norsh和/secure。但我总是出错。
这是我正在使用的 Dovecot 配置:
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=LOGIN] Dovecot ready.
该证书实际上是自签名的,并使用 openssl 生成。
问题是:
我正在尝试使用SSL设置多个vhosts的Dovecot.
我已经设置了我的主域名(example.de)和我的vhosts(example2.com&example3.co.uk)我正在使用本地-option.
我的问题:
当我连接到我的服务器时,它会在我的主要域名和其他域上抱怨错误的主机名(example3.co.uk).
如何让dovecot为每个主机使用正确的证书?
这是我的dovecot配置:
listen = *
ssl = yes
protocols = imap pop3
disable_plaintext_auth = no
auth_mechanisms = plain login
mail_access_groups = vmail
default_login_user = vmail
first_valid_uid = 2222
first_valid_gid = 2222
#mail_location = maildir:~/Maildir
mail_location = maildir:/home/vmail/%d/%n
passdb {
driver = passwd-file
args = scheme=SHA1 /etc/dovecot/passwd
}
userdb {
driver = static
args = uid=2222 gid=2222 home=/home/vmail/%d/%n allow_all_users=yes
}
service auth {
unix_listener auth-client {
group = postfix
mode = 0660
user = root
}
user …Run Code Online (Sandbox Code Playgroud) Dovecot 支持mbox和maildir格式来存储电子邮件。我搜索了它的文档以将所有电子邮件存储在MySQL数据库中,但我找不到它。
是否可以告诉 dovecot 将所有传出和传入的电子邮件存储在数据库中?
在数据库中存储电子邮件确实可以非常灵活地搜索电子邮件中的关键作品等。
GMAIL如何存储其电子邮件?它是基于maildir格式吗?
我需要从桌面上的 Node.js 通过远程 Postfix/Dovecot SASL 服务发送电子邮件。
当我使用 Thunderbird 发送电子邮件时,它可以工作并且 Postfix 服务器日志显示
Anonymous TLS connection established from unknown[dh.cp.ip.ip]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
但不是通过 nodemailer,Postfix 服务器在其中记录:
Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: connect from unknown[dh.cp.ip.ip]
Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: lost connection after CONNECT from unknown[dh.cp.ip.ip]
Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: disconnect from unknown[dh.cp.ip.ip] commands=0/0
Run Code Online (Sandbox Code Playgroud)
这些相同的设置用于 Nodemailer 传输和 Thunderbird
let transporter = nodemailer.createTransport(
{
host: "mx.example.com",
port: 587,
secure: false, // use TLS
// requireTLS:true,
auth: {
user: "emailuser",
pass: "password" …Run Code Online (Sandbox Code Playgroud) 我最近使用 zpanel (带有dovecot和格式)为我的域设置邮件服务器Maildir,并在此处创建了一个用户电子邮件帐户user@my-domain.com。
这里所有的电子邮件都存储在服务器/var/zpanel/vmail/路径下的以下树中
my-domain.com
|--> cur/
| ------
|--> new/
| ------
|--> tmp/
------
Run Code Online (Sandbox Code Playgroud)
我有来自旧服务器的所有用户电子邮件(格式与上面相同)。我的域的电子邮件服务器my-domain.com之前托管在哪里。
问题是,我在新服务器上已经有几封用户电子邮件,我想合并两者,以便它显示我从新电子邮件服务器和旧电子邮件服务器发送的所有电子邮件。
有什么办法可以合并这两个maildirs吗?
dovecot ×10
postfix-mta ×5
centos6 ×2
docker ×2
email ×2
mail-server ×2
certificate ×1
gmail ×1
imap ×1
linux ×1
maildir ×1
mysql ×1
node.js ×1
nodemailer ×1
openssl ×1
php ×1
ports ×1
python ×1
self-signed ×1
sha2 ×1
sha512 ×1
smtp ×1
ssl ×1
storage ×1
ubuntu ×1
virtualhost ×1