昨天我设置了一个邮件服务器这教程中所有操作都正常,但今天我无法发送或接收邮件。当我想用我的[电子邮件保护]Thunderbird 要求我输入密码,但不接受(我检查了 3 个不同的邮件地址)。
postfix/pickup[15575]: 8724D2C411F5: uid=33 from=<www-data>
postfix/cleanup[16104]: 8724D2C411F5: message-id=<20130715165704.8724D2C411F5@Ubuntu-1204-precise-64-minimal.localdomain>
postfix/cleanup[16104]: warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (111)
warning mysql: /etc/postfix/maps/alias.cf lookup error for "[email protected]"
warning: A3C912C411F5: virtual_alias_maps map lookup problem for "[email protected]" -- deferring delivery
这[电子邮件保护]是我的个人地址。
ls -la /etc/postfix
drwxr-xr-x 4 root root 4096 Jul 14 11:06 .
drwxr-xr-x 124 root root 12288 Jul 14 22:51 ..
-rw-r--r-- 1 root root 329 Jul 14 09:50 dynamicmaps.cf
-rw-r--r-- 1 root root 1651 Jul 14 10:49 main.cf
-rw-r--r-- 1 root root 1286 Jul 14 09:50 main.cf.default
drwxr-xr-x 2 root root 4096 Jul 15 18:42 maps
-rw-r--r-- 1 root root 4798 Jul 14 09:57 master.cf
-rw-r--r-- 1 root root 5531 Jul 14 09:50 master.cf.default
-rw-r--r-- 1 root root 19707 Feb 20 21:03 postfix-files
-rwxr-xr-x 1 root root 8729 Feb 20 21:03 postfix-script
-rwxr-xr-x 1 root root 26498 Feb 20 21:03 post-install
drwxr-xr-x 2 root root 4096 Jul 14 10:07 sasl
ls -la /etc/postfix/maps
total 20
drwxr-xr-x 2 root root 4096 Jul 15 18:42 .
drwxr-xr-x 4 root root 4096 Jul 14 11:06 ..
-rwx------ 1 postfix postfix 158 Jul 15 18:42 alias.cf
-rwx------ 1 postfix postfix 170 Jul 14 10:05 domain.cf
-rwx------ 1 postfix postfix 235 Jul 14 10:05 user.cf
在MYSQL中:
SHOW GRANTS FOR root@%
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
/etc/mysql/my.cnf
当我将绑定地址设置为 127.0.0.1 时,我可以发送和接收电子邮件,但无法打开我的网站:
ERROR: SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'mywebsite.com' (111)
如果我将其改回网站的 IP 地址,网站可以加载,但我无法发送或接收电子邮件。
我/etc/hosts
有
my.ip.address www.example.com Ubuntu-1204-precise-64-minimal
如果我注释掉 bind-address 参数一切运行正常,但我认为该参数存在是有原因的。有什么想法吗?
答案1
当你注释掉 bind 参数时,mysql 将绑定到所有接口。这样你的 mysql 服务器就会暴露在互联网上,所以如果你需要让 mysql 监听面向互联网的接口,因为另一个远程服务器需要使用它,那么你可以使用iptables或者主机允许过滤流量以限制您的攻击面。
答案2
作为由@Shutupsquare 解释,删除 bind-address 将让 MySQL 监听所有接口,包括IP-address-of-mywebsite.com和环回IP地址127.0.0.1。
如果您的网站与 postfix 位于同一台服务器上,那么更改网站的 MySQL 参数将很有用,这样它将连接到 127.0.0.1,而不是连接到 IP-address-of-mywebsite.com。然后设置
bind-address
为 127.0.0.1。它将阻止其他主机连接您的 MySQL,因为 MySQL 仅监听环回 IP 地址。如果你的网站在其他主机上,那么来自@Shutupsquare 的防火墙解决方案将限制可以连接到 MySQL 的 IP 地址