当我设置 VPS 时,我将名称设置为“main”,这样我的 /etc/hosts 和 /etc/hostnames 文件都只有一个条目(即“main”)。因此,我设置了 root ssh 访问权限并输入“hostname”,它返回的是“main”。当我输入“hostname -f”时,结果也是一样。
好吧,我正在尝试设置 Exim4 从我的 Django 应用程序发送邮件(我只需要发送,不需要接收),并且我将以下内容添加到/etc/hosts
。
127.0.1.1 main.mydomain.com main
<myip> main.mydomain.com main
然后我执行service hostname restart
并hostname -f
只返回main
。我甚至重新启动(我尽量避免这样做),但它仍然返回main
。不知道这是为什么...实际文件本身显示了我的新条目,但我无法让实际hostname
或hostname -f
命令改变。
我猜是这样的,但我不能 100% 确定,这就是为什么当我使用该命令时我没有收到电子邮件(电子邮件太多?)。如果不是绝对有必要设置主机名来使用 exim,我想避免它,因为它让我很头疼。echo test message | mail -s test [email protected]
[email protected]
任何帮助都会让我永远感激您的卓越。
答案1
要设置域名,您可以使用同名程序domainname
:
sudo domainname example.com
要查询实际设置的值,请不带参数调用它。
还需要运行hostname.sh
脚本(取决于操作系统)才能使更改生效:
/etc/init.d/hostname.sh
在 Debian 和衍生版本中,还应/etc/mailname
包含用于发送电子邮件的默认发件人域。
我无法对 Exim 做出声明,但我认为 exim 中主机和域名的默认值应该指向操作系统的设置。
引用 hostname 的手册页:
FQDN
您无法使用此命令更改 FQDN(由 hostname --fqdn 返回)或 DNS 域名(由 dnsdomainname 返回)。系统的 FQDN 是 resolver(3) 为主机名返回的名称。
技术上:FQDN 是 getaddrinfo(3) 返回的 gethostname(2) 主机名的名称。DNS 域名是第一个点后面的部分。
因此,如何更改它取决于配置(通常在 /etc/host.conf 中)。通常(如果在 DNS 或 NIS 之前解析 hosts 文件),您可以在 /etc/hosts 中更改它。
答案2
如果邮件是通过 postfix 发送的,那么您还应该编辑/etc/postfix/main.cf
以获得正确的值myhostname = xyz