Centos 7 Postfix使用第三方的smtp

参见前一篇文章,阿里云的ecs全部关闭了25端口,因此我们只能使用postfix来通过第三方的smtp服务发送一些系统邮件,比如说报警邮件.

这些第三方服务商一般提供25,587端口的smtp的服务,这里我们选择使用587端口

假设你的服务器的hostname是beta.iamhippo.com, 在/etc/aliases 中设定

root    [email protected]

表示所有发向root的邮件都转发到[email protected], 下面是详细的步骤:

1) 安装必须的library

centos/redhat/fedora:

yum install cyrus-sasl-plain

debian/ubuntu:

apt-get install libsasl2-modules

如果你不安装cyrus或者libsasl库,你会得到“no mechanism found error”

2) 设置smtp的用户名,密码

postfix的smtp的用户名和密码位于/etc/postfix/sasl_password

vi /etc/postfix/sasl_password

按照下面的格式添加验证信息:

[mail.isp.example]:587 username:password

我们需要hash一些这个文件来给postfix使用

postmap /etc/postfix/sasl_passwd

一切都正常的情况下,你会在这个目录/etc/postfix目录下看到sasl_passwd.db文件

必要的安全设置:

chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

3) 设置generic map

如果我们是通过配置csf,让系统自动发送报警邮件,那么一般是来自于[email protected], 我们想在邮件中替换这个邮件的话,可以使用generic的功能,比如说我们想把[email protected] 改成[email protected], 那么可以这么写:

[email protected] [email protected]

然后和sasl_password 一样,我们需要hash 一下

postmap /etc/postfix/generic
chown root:root /etc/postfix/generic /etc/postfix/generic.db
chmod 0600 /etc/postfix/generic /etc/postfix/generic.db

4) 配置reply server

这个配置起来就比较简单了,直接打开/etc/postfix/main.cf文件,在最末尾添加:

# specify SMTP relay host
relayhost = [mail.isp.example]:587


# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# where to find generic
smtp_generic_maps = hash:/etc/postfix/generic

保存配置,然后重启postfix

systemctl restart postfix

当然了,建议在重启之前先把postfix 中的queue mails 都删掉。。要不然积累了大量的邮件会一次性发出的

postsuper -d ALL

或者

postfix -f

或者

postfix flush

查看mail queue:

mailq

 

阿里云邮件推送的坑

国内的服务器一直在使用阿里云的,没有办法目前的情况下阿里云确实是国内的No.1

阿里云的ecs默认是关掉25端口的,就算是你申请解封25端口成功了,你也无法用25端口发信,他只允许你用25端口连接到其他的smtp服务器来发信.

使用阿里云的服务,自然而然的想到阿里云的邮件推送服务,而且他还赠送一部分免费的额度,对于我们这种只需要发送触发邮件的人来说,这是非常合适的.

但是这里的一个坑就是smtp协议下只支持25,80,465端口,而465端口一般用来支持STARTTLS, 这个协议比较老,国际标准化组织已经不再推荐,很多的程序例如iredmail默认已经不支持这个端口了。如果你使用的是debian,ubuntu的话,那么这是没有任何问题的,因为自带的postfix 的版本相对来说要新很多, 是3.0 的版本,支持465端口. 如果你使用的是centos7 并且使用的是自带的postfix的话,那么恭喜你,你获奖了。。。

centos7自带的postfix的版本相对来说要低很多,是2.10的版本。。。

而且postfix 的2.10的版本,对于465端口,也就是smtps并不是很支持,你需要使用的stunnel的转发smtps的请求. 详细请看这里:

http://www.postfix.org/TLS_README.html#client_smtps

网上铺天盖地的教程都是apt-get, 我想他们可以也没有想到在centos7 里面会出现问题,不值得花时间去演就演stunnel,那么多的提供标准服务的smtp服务商,舍弃阿里云推送就好了.

如果你的网站位于国外,那么你可以使用sendgrid或者mailgun,都是非常的方便

Centos 7 安装并配置monit

Monit 是一个开源的linux 程序,用来监控程序,并且在必要的时候重启.

在centos上安装的非常的简单.

首先需要安装epel repo:

yum install epel-release

然后就可以安装monit了

yum install monit

将monit加入开机自启动并且start monit进程:

systemctl enable monit
systemctl start monit

查看monit 状态:

systemctl status monit

更多

WebNX Utah机房E3-1275V5 1TB SSD服务器benchmark

在webhostingtalk上看到webnx 有一款机器在on sale,配置相当不错,而我又是webnx 的超级粉,立马拿下替换了原来旧的机器,新机器的配置如下:

Intel Xeon E3-1275v5 quadcore 3.6ghz
64gb ddr4 ECC ram
1TB Enterprise SSD
/29 5x usable ip's
30Tb over 1gbps
$65 ** limited time until we burn up the stock on hand!

实话实说,这个机器还是非常有新引力的,再加上webnx 100%的SLA 和 super connected network, 真的是非常爽的价格.

我准备用它来做ESXi 新的vCSA 主控. 

在deploy ESXi之前,先来测试一下这台机器的硬件和network. 

更多

Supermicro 服务器IPMI 安装CentOS问题

现在大部分的美国服务商都是使用的supermicro 的服务器,supermicro 一般都自带IPMI.

但是在使用Intel 的E3 CPU 的时候,确会出现这样那样的问题。

总体来说,对于E3 的CPU,supermicro 有两个系列, X10 和 X11,分别专门应该E3-V3,v4 和E3-V5,V6的CPU,问题也由此而来

  1. 安装centos 7 的时候,预加载完成以后就直接黑屏,这是因为IPMI 自带的Aspeed 显卡驱动的问题,在选择安装centos 7 的时候,press tab, 在kernel 的启动选项里面append nomodeset 就可以了
  2. 除了黑屏问题,还有显示soft lock up 等等,这个也是显卡的问题,需要在kernel 的启动选项里面append nomodeset
  3. https://serverfault.com/questions/889868/centos-installer-hangs-through-ipmi, 如果出现这个页面中的问题,或者hangs on start login service,又或者hangs on XXXXX zRAM什么的,那么真的无解,只能安装centos 7 比较老的版本,比如说1511
  4. 有些以5结尾的E3 的cpu,比如说E3-1245V3,E3-1275V5等等 自带显卡,那么也会和ipmi 的显卡aspeed 2400/2500 冲突,也需要在kernel 的启动选项里面选择append nomodeset

 

国外网站关于此问题的讨论:

https://unix.stackexchange.com/questions/353896/linux-install-goes-to-blank-screen

supermicro 官方给的解决方案:

https://www.supermicro.org.cn/support/faqs/faq.cfm?faq=30162

Fedora 也遇到了这样的问题:

https://mangolassi.it/topic/18685/fedora-29-server-or-28-install-is-stuck

MYSQL Error 2061

在phpmyadmin中更新password 时,选错了auth 方式,没有选mysql-native-password, 选了一个sha256 什么的。。再用root登录,就立马出现了 error 2061

后来google 了好久,才发现在mysql 5.X 中,默认的auth 方式是mysql-native-password方式,在mysql 8 中一般会选用sha256什么的。。

现在问题的关键是root 无法登陆,这是因为root 的auth 方式被更改为了 sha256-password 的方式。 知道了问题的原因,解决起来就好说了

解决步骤:

1) 关闭mysql 服务

service mysql stop

2) start mysql without password auth

mysqld_safe --skip-grant-tables &

3) 重启mysql 服务

service mysql start

4)用root 登录

mysql -uroot -p

5) 更新root 的密码和auth 方式

mysql 5.7.5 及以前

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD"), plugin="mysql_native_password" where User='root';
mysql> flush privileges;
mysql> quit

6)关闭mysql 服务

service mysql stop

7) 启动mysql 服务

service mysql start

 

 

 

AWS EC2更改hostname

现在的很多教程都是参考官方的wiki写的,但是wiki里面写的很清楚支持Amazon Linux,各大教程改个标题就说Ubuntu 这么改,centos 这么改等等。。

对于正常的主机,确实是改下/etc/hostname就可以显示我们想要的主机名的,但是AWS EC2 比较奇葩,hostname 都是开机时自动从云端获取并写道/etc/hostname中,这就是为什么直接修改/etc/hostname无效的原因

对于centos 来说,要用hostnamectl命令来修改hostname

sudo hostnamectl set-hostname --static www.iamhippo.com