设为首页 收藏本站
查看: 1318|回复: 0

[经验分享] Ubuntu之Gitlab、Gerrit、Jenkins协调工作配置之部分一:邮箱配置

[复制链接]

尚未签到

发表于 2018-9-4 10:12:36 | 显示全部楼层 |阅读模式
前提

  •   系统为 Ubuntu , 版本为14.04, 其他版本问题应该不大
  •   系统 hostnamezjc - 详见设置linux主机名 —– 此步非必须

    •   $ sudo su
    •   # echo zjc > /etc/hostname
    •   # exit

  •   系统IP地址为10.1.6.49
  •   一些地址映射 要加入/etc/hosts文件或者DNS

    •   $ sudo apt-get install vim
    •   $ sudo vim /etc/hosts #自然,也可以用其他文本编辑器
    • #新添加的项  10.1.6.49      zjc zjc.com vzjc.com  mail.vzjc.com

  •   修改完毕后最好重启一下机器

    •   $ sudo shutdown -r now

安装依赖包
$ sudo apt-get install openssl telnet libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql1安装mysql
  $ sudo apt-get install mysql-client mysql-server
  首次安装后会提示输入mysql密码,输入确认并记住,以后还需要用到
设置MySQL数据库
  其中的mail_admin和password-for-mail_admin为生成的数据库mail的用户名和密码,可以修改成自己的,但是一旦修改,后文中出现的地方都要修改。
  $ mysql -u root -p
  Enter password: input your password
  mysql> CREATE DATABASE mail;
  mysql> USE mail;

  mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost'>
  mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'127.0.0.1'>  mysql> FLUSH PRIVILEGES;
  mysql> CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
  mysql> CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
  mysql> CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
  mysql> CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
  mysql> quit
安装Postfit及相关
  $ sudo apt-get install postfix postfix-mysql postfix-doc mailutils
  如果postfit弹出设置界面,那么
  General type of mail configuration 选择 Internet Site
  System Mail Name 选择 vzjc.com
配置Postfit
虚拟domain配置文件
  $ sudo vim /etc/postfix/mysql-virtual_domains.cf
user = mail_admin  
password = password-for-mail_admin
  
dbname = mail
  
query = SELECT domain AS virtual FROM domains WHERE domain='%s'hosts = 127.0.0.112345
虚拟forwarding配置文件
  $ sudo vim /etc/postfix/mysql-virtual_forwardings.cf
user = mail_adminpassword = password-for-mail_admindbname = mailquery = SELECT destination FROM forwardings WHERE source='%s'hosts = 127.0.0.112345虚拟mailbox配置文件
  $ sudo vim /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin  
password = password-for-mail_admin
  
dbname = mail
  
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'hosts = 127.0.0.112345
虚拟email2email配置文件
  $ sudo vim /etc/postfix/mysql-virtual_email2email.cf
user = mail_adminpassword = password-for-mail_admindbname = mailquery = SELECT email FROM users WHERE email='%s'hosts = 127.0.0.112345设置权限
$ sudo chmod o= /etc/postfix/mysql-virtual_*.cf  
$ sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf12
建立用户
$ sudo groupadd -g 5000 vmail  
$ sudo useradd -c 'VMail' -g vmail -u 5000 vmail -d /home/vmail -m12
使用postconf配置
  此处有个需要注意的地方mynetworks应该包含本机的所有IP地址,例如我这里只有一个10.1.6.197,不然会导致发给自己的域的邮件接收不到。如果还是接收不到,那么重启机器看看
postconf -e 'myhostname = vzjc.com'postconf -e 'mydestination = vzjc.com, localhost, localhost.localdomain'postconf -e 'mynetworks = 127.0.0.0/8, 10.1.6.197'postconf -e 'message_size_limit = 30720000'postconf -e 'virtual_alias_domains ='postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'postconf -e 'virtual_mailbox_base = /home/vmail'postconf -e 'virtual_uid_maps = static:5000'postconf -e 'virtual_gid_maps = static:5000'postconf -e 'smtpd_sasl_auth_enable = yes'postconf -e 'broken_sasl_auth_clients = yes'postconf -e 'smtpd_sasl_authenticated_header = yes'postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'postconf -e 'smtpd_use_tls = yes'postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'postconf -e 'virtual_transport = dovecot'postconf -e 'local_transport = dovecot'123456789101112131415161718192021为postfix创建证书
$ cd /etc/postfix  
$ sudo openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x50912
更改证书权限
  $ sudo chmod o= /etc/postfix/smtpd.key
配置saslauthd
$ sudo mkdir -p /var/spool/postfix/var/run/saslauthd  
$ sudo cp -a /etc/default/saslauthd /etc/default/saslauthd.bak12
  $ sudo vim /etc/default/saslauthd
START=yesDESC="SASL Authentication Daemon"NAME="saslauthd"MECHANISMS="pam"MECH_OPTIONS=""THREADS=5OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"1234567  $ sudo vim /etc/pam.d/smtp
auth    required   pam_mysql.so user=mail_admin passwd=password-for-mail_admin host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1account sufficient pam_mysql.so user=mail_admin passwd=password-for-mail_admin host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=112  $ sudo vim /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthdmech_list: plain loginallow_plaintext: trueauxprop_plugin: sqlsql_engine: mysqlsql_hostnames: 127.0.0.1sql_user: mail_adminsql_passwd: password-for-mail_adminsql_database: mailsql_select: select password from users where email = '%u@%r'12345678910设置权限
$ sudo chmod o= /etc/pam.d/smtp  
$ sudo chmod o= /etc/postfix/sasl/smtpd.conf12
重启服务
$ sudo adduser postfix sasl  
$ sudo service postfix restart
  
$ sudo service saslauthd restart123
安装dovecot及相关
安装dovecot
  $ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d dovecot-mysql
  弹出的选项中选择生成根证书,并且生成的证书dovecot.pem应该在/etc/dovecot/下面,key在/etc/dovecot/private下面。请确认这一点
  hostname 填写 vzjc.com
配置dovecot
  $ sudo vim /etc/postfix/master.cf
  取消submission配置的注释:
submission inet n       -       -       -       -       smtpd  
  -o syslog_name=postfix/submission  -o smtpd_tls_security_level=encrypt  -o smtpd_sasl_auth_enable=yes  -o smtpd_client_restrictions=$mua_client_restrictions  -o milter_macro_daemon_name=ORIGINATING123456
  文件末尾增加
dovecot   unix  -       n       n       -       -       pipe  
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
  $ sudo cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak
清空文件/etc/dovecot/dovecot.conf,加入如下
  $ sudo vim /etc/dovecot/dovecot.conf
  : 1,$d
  注意ssl_cert, ssl_key指向的证书和私钥必须存在
log_timestamp = "%Y-%m-%d %H:%M:%S "mail_location = maildir:/home/vmail/%d/%n/Maildir  
namespace {
  
  inbox = yes
  
  location =
  
  prefix = INBOX.
  
  separator = .
  
  type = private}
  
passdb {
  
  args = /etc/dovecot/dovecot-sql.conf
  
  driver = sql
  
}
  
protocols = imap pop3
  
disable_plaintext_auth = no
  
auth_mechanisms = plain login
  
service auth {
  
  unix_listener /var/spool/postfix/private/auth {    group = postfix
  
    mode = 0660
  
    user = postfix
  
  }
  
  unix_listener auth-master {
  
    mode = 0600
  
    user = vmail
  
  }
  
  user = root
  
}
  
ssl = required
  
ssl_cert = INSERT INTO domains (domain) VALUES ('vzjc.com');
  mysql> INSERT INTO users (email, password) VALUES ('test1@vzjc.com', ENCRYPT('password-for-test1'));
  mysql> INSERT INTO users (email, password) VALUES ('test2@vzjc.com', ENCRYPT('password-for-test2'));
  mysql> INSERT INTO users (email, password) VALUES ('admin@vzjc.com', ENCRYPT('111111'));
  mysql> quit
  本来以为用户名可以用 test1 形式, 而不用 test1@vzjc.com 形式呢,结果如果不加@时候收发邮件是时灵时不灵的。。。不测试了,用户名直接加域名得了
重启机器
  做完上面操作后如果用telnet vzjc.com 587,则显示不能连接,机器重启后就可以了 – 原因待查
  $ sudo shutdown -r now
用telnet测试
  $ telnet vzjc.com 587
  Trying 10.1.6.197…
  Connected to vzjc.com.
  Escape character is ‘^]’.
  220 vzjc.com ESMTP Postfix (Ubuntu)
  ehlo vzjc.com
  250-vzjc.com
  250-PIPELINING
  250-SIZE 30720000
  250-VRFY
  250-ETRN
  250-STARTTLS
  250-ENHANCEDSTATUSCODES
  250-8BITMIME
  250 DSN
  quit
  221 2.0.0 Bye
  Connection closed by foreign host.
  $ telnet vzjc.com smtp
  $ telnet vzjc.com 110
  Trying 10.1.6.197…
  Connected to vzjc.com.
  Escape character is ‘^]’.
  +OK Dovecot (Ubuntu) ready.
  quit
  +OK Logging out
  Connection closed by foreign host.
用客户端测试
  可以用ubuntu的thunderbird或者其他系统的outlook,foxmail等客户端测试,如果是其他机器上,注意一系列端口号一定要被服务器开放

FAQ:
  解决Postfit不能群发的问题 解决方案
参考:
  https://www.centos.bz/2013/06/ubuntu-12-04-deploy-postfix-dovecot-mysql-cyrus-sasl/
  http://nonfu.me/p/2753.html
  http://blog.163.com/kssh0487596@126/blog/static/32111129201001911212786/


  •   顶
  •   0


  •   踩



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562346-1-1.html 上篇帖子: jenkins 安装配置 下篇帖子: jenkins打包签名apk
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表