debian搭建邮件服务器 - CSDN
  • 自己搭建邮件服务器有许多好处,比如可以解决隐私问题。自己的邮件服务器只有自己才能查看里面的邮件,再也不用担心电子邮箱提供商比如Gmail、 QQ邮箱、网易邮箱的员工偷看我们的邮件了,或者把我们的邮件提供给政府...

    自己搭建邮件服务器有许多好处,比如可以解决隐私问题。自己的邮件服务器只有自己才能查看里面的邮件,再也不用担心电子邮箱提供商比如Gmail、 QQ邮箱、网易邮箱的员工偷看我们的邮件了,或者把我们的邮件提供给政府机构。另外一个好处是发送附件不用担心附件的大小。Gmail的附件不能超过 25M,QQ邮箱的普通附件不能超过20M。有了自己的邮件服务器,我们可以自己限定附件的大小。

    在这篇教程中,我将告诉你如何搭建一个简单的Postfix+Dovecot邮件服务器。Postfix是一个MTA,而Dovecot同时实现了MDA和IMAP/POP3服务器两个功能。这篇教程是写给Debian 8 Jessie 用户的,但对其他基于Debian的Linux发行版也有很大的参考价值。在下文中,用domain.com来表示一个域名,你需要将domain.com替换成你自己的域名。完成了所有步骤后,我们的服务器将会有下面的功能:

    • 接收和投递邮件 (Postfix,SMTP协议)
    • 从邮件客户端读取邮件服务器上的邮件 (Dovecot,IMAP协议)
    • 加密连接 (SSL/TLS协议)
    • 用户名和密码验证登录 (PAM)

    在开始安装前,我强烈建议读者先阅读电子邮件系统是如何运作的?这篇文章。邮件服务器的搭建比web服务器的搭建要复杂得多,了解电子邮件系统背后的原理对下面进行的复杂配置有很大帮助,对今后管理自己的邮件服务器也有用处。搭建一个完全符合自身要求的Linux邮件服务器是一个艰难的过程,除非你是一个专业的服务器管理员。不过,我将详细解释每一个步骤,只要你了解一些基本的Linux命令,并付出一点时间,成功搭建起来并不是一个问题。

    设置DNS MX记录和A记录

    首先我们需要在域名注册商网站设置好DNS记录以正确地接收和投递邮件。通常邮件服务器需要设置一个MX记录和一个A记录,形式如下:

    @         MX       mail.domain.com
    mail      A        12.34.56.78

    其中@符号表示主机名为空,相当于domain.com。第一条MX记录指定了domain.com这个域名的邮件服务器主机名。它的意思是:如果收件人邮箱地址@符号后面的域名是domain.com,那么发件人的MTA要将邮件投递到mail.domain.com这个主机。第二条A记录将mail.domain.com解析成IP地址。

    例如,我的邮箱地址是xiao@linuxbabe.com,邮箱地址@符号后面的域名是linuxbabe.com。在你给我发邮件时,你的MTA首先查询DNS MX记录,“哦,原来是mail.linuxbabe.com这个主机负责linuxbabe.com的邮件呀”。然后你的MTA将查询mail.linuxbabe.com主机的IP地址,也就是从A记录找到mail.linuxbabe.com主机的IP地址,从而可以投递成功。

    MX的全称是 Mail Exchanger, A的全称是 Address, 特指 IP Address。

    第二条A记录的IP地址可以与web服务器的IP地址相同,也可以不同。这就是说,我们可以在原有web服务器基础上再搭建一个邮件服务器,也可以在另外一台主机上单独搭建邮件服务器。通常web服务器的DNS记录有两条,形式如下:

    @               A          12.34.56.78
    www             A          12.34.56.78

    第一条A记录表示当我们在浏览器地址栏输入domain.com时,浏览器将连接到12.34.56.78这台主机,第二条A记录表示在浏览器地址栏输入www.domain.com时,浏览器将连接到12.34.56.78

    验证DNS记录是否设置正确

    在终端中输入下面的命令,寻找domain.com的邮件服务器主机名

    dig MX domain.com +short

    然后输入下面的命令寻找邮件服务器的IP地址,假设邮件服务器的主机名为mail.domain.com

    dig A mail.domain.com +short

    如果这条命令显示的IP地址是你服务器的IP地址,那么你的DNS设置就是正确的。

    对 dig MX domain.com +short命令输出结果的解释:比如我的输出结果如下:
    0 mail.linuxbabe.com.
    你会发现邮件服务器主机名前面有一个数字,数字表示这个主机的优先级。有些网站的邮件服务器可能有两三个,数字越低优先级越高。优先级高的邮件服务器接收邮件,其他邮件服务器不接收邮件。但如果优先级高的邮件服务器不在线了,那么发件人的邮件服务器便会把邮件发给下一个优先级的邮件服务器。


    你还会发现邮件服务器的主机名后面多了一个小数点。这是因为 dig命令是从 DNS服务器的 zone文件查询信息,zone文件的格式要求 MX对应的邮件服务器主机名要以小数点结束。你在设置 DNS MX记录时不需要加末尾的小数点,因为你是在域名注册商网站编辑 DNS记录,而不是直接编辑 zone文件。末尾的小数点会在你编辑完 DNS MX记录后在 zone文件里自动添加。你在输入 dig A mail.domain.com +short命令时也不需要添加末尾小数点。

    获取一个SSL证书

    为了邮件的加密传输,我们需要为邮件服务器安装SSL证书。SSL证书分为两种,CA证书和自签证书。CA(Certificate Authority)是浏览器信任的第三方证书签发机构,比如VeriSign。一般情况下CA证书是要花钱买的。自签证书就是自己给自己发一个SSL证书,不过这种证书不太理想。因为浏览器不会信任自签的证书。不过有一个叫Let’s Encrypt的CA机构可以提供免费版本的证书,具体的申请过程请看这篇文章。获得Let’s Encrypt的免费CA证书后,请继续往下看。

    安装Postfix

    Postfix是一个安全稳定、容易配置的MTA,常见于Unix-like服务器。事实上它是Mac OS X系统默认的MTA。
    登录Debain Server,输入下面的命令安装Postfix:

    sudo apt-get install postfix

    安装过程中会问你邮件服务器的配置类型,如下图。一般情况下,我们需要选择第二个Internet Site。

    Selection_023

    No configuration 表示不要做任何配置;
    Internet Site 表示直接使用本地SMTP服务器发送和接收邮件;
    Internet with smarthost 表示使用本地SMTP服务器接收邮件,但发送邮件时不直接使用本地SMTP服务器,而是使用第三方smart host来转发邮件;
    Satellite system 表示邮件的发送和接收都是由第三方smarthost来完成。
    Local only 表示邮件只能在本机用户之间发送和接收。

    在第二个页面填入你的域名,也就是邮箱地址@符号后面的域名,比如,我的邮箱地址是xiao@linuxbabe.com,所以我填的是linuxbabe.com。

    Selection_024

    选择OK后,postfix便开始安装,并会根据你的选择和填入的信息生成一个配置文件/etc/postfix/main.cf。

    Postfix有一个工具叫做 postconf,你可以输入下面的命令查看 Postfix的版本:

    sudo postconf mail_version

    Postfix安装好后,就可以收发邮件了。如果你的服务器上有一个用户叫user,那么这个用户的邮箱地址就是user@domain.com。你的服务器上肯定有一个用户叫root,所以root的邮箱地址就是root@domain.com。现在你可以在自己的电脑上给你的服务器用户发送一封测试邮件。发完测试邮件后,在服务器上执行命令mail来查看测试邮件的内容。在mail命令行工具中输入reply来回复这封测试邮件。点击此链接学习如何在命令行界面收发邮件。

    配置Postfix

    不过,到现在,我们只能在服务器上用命令行来收发邮件,我们最终的目的是要能够在自己的桌面上用邮箱客户端来收发邮件。所以我们还需要做下面的配置。postfix有两个主要的配置文件,一个是/etc/postfix/main.cf,另外一个是/etc/postfix/master.cf。

    main.cf   myhostname, mydestination, myorigin

    首先我们来编辑/etc/postfix/main.cf文件,用你喜欢的文本编辑器打开它:

    sudo vi /etc/postfix/main.cf

    首先设置文件中第31行myhostname的值。Postfix在接收和发送邮件时,会用myhostname的值向其他SMTP服务器说明自己的身份。myhostname的值要对应域名MX记录的主机名。我的MX记录如下:

    @            MX         mail.linuxbabe.com

    所以我把myhostname的值设置成mail.linuxbabe.com

    myhostname = mail.linuxbabe.com

    第35行mydestination的值按照下面的设置。Postfix可以负责多个域名的邮件收发业务。我们就是通过mydetination这个参数来指定这些域名。这篇教程只考虑一个域名的邮件收发业务。Postfix在安装过程中,会自动添加localhost.locadomain和localhost到mydestination的值中,这是为了方便本机用户之间的邮件发送。

    mydestination = linuxbabe.com, mail.linuxbabe.com, localhost.linuxbabe.com, localhost

    然后第34行设置myorigin的值。前面说过,Postfix可以负责多个域名的邮件业务,我们要指定其中一个域名为myorigin。其实在安装postfix的时候我们已经设置好了。myorigin的值就是System mail name的值。它保存在/etc/mailname 文件中。所以myorigin在/etc/postfix/main.cf的值如下:

    myorigin = /etc/mailname

    你也可以将它直接设置成域名,如

    myorigin = linuxbabe.com

    master.cf  启用MSA和SMTPS

    Postfix自带了一个MSA。当发件人从邮件客户端发送邮件时,MSA接收邮件客户端的邮件,然后提交给Postfix的MTA模块,MTA再发送给收件人的MTA。

    邮件客户端和MSA之间使用SMTP协议。当MSA使用SSL/TLS来加密SMTP协议时,会打开465号端口,这时称协议为SMTPS协议。当MSA使用STARTTLS来加密SMTP时,会打开587号端口。输入下面的命令打开/etc/postfix/master.cf文件:

    sudo vi /etc/postfix/master.cf

    找到以Submission和SMTPS开头的那两行,去掉前面的#符号。-o 表示选项(option),绿色表示要去掉前面的#符号,如果没有这一行,那么要手动添加。如下:

    submission inet n - - - - smtpd
      -o syslog_name=postfix/submission
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
    # -o smtpd_reject_unlisted_recipient=no
    # -o smtpd_client_restrictions=$mua_client_restrictions
    # -o smtpd_helo_restrictions=$mua_helo_restrictions
    # -o smtpd_sender_restrictions=$mua_sender_restrictions
    # -o smtpd_recipient_restrictions=
      -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
    # -o milter_macro_daemon_name=ORIGINATING
      -o smtpd_sasl_type=dovecot
      -o smtpd_sasl_path=private/auth
    smtps inet n - - - - smtpd
    # -o syslog_name=postfix/smtps
    # -o smtpd_tls_wrappermode=yes
    # -o smtpd_sasl_auth_enable=yes
    # -o smtpd_reject_unlisted_recipient=no
    # -o smtpd_client_restrictions=$mua_client_restrictions
    # -o smtpd_helo_restrictions=$mua_helo_restrictions
    # -o smtpd_sender_restrictions=$mua_sender_restrictions
    # -o smtpd_recipient_restrictions=
    # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
    # -o milter_macro_daemon_name=ORIGINATING

    submission这一行启用MSA服务,SMTPS这一行启用SMTPS服务。你也可以只启用MSA,不启用SMTPS。因为MSA默认使用STARTTLS加密,SMTPS快要过时了。

    25号端口是MTA打开的端口,当其他MTA发来邮件或本地MSA提交邮件要发送出去时,它们要连接到25号端口。465/587号端口是MSA为MUA打开的端口。

    main.cf 安装SSL证书

    要加密SMTP协议,我们的邮件服务器必须要有一个SSL证书。从StartSLL取得一个证书后,我们要把证书和私钥安装在邮件服务器上。假设证书文件是unified.crt,保存在/etc/ssl/certs/unified.crt。私钥文件是my-private-decrypted.key,保存在/etc/ssl/certs/my-private-decrypted.key。打开/etc/postfix/main.cf文件,从第21行开始,作如下修改:

    # TLS parameters
    smtpd_tls_cert_file=/etc/ssl/certs/unified.crt
    smtpd_tls_key_file=/etc/ssl/private/my-private-decrypted.key
    smtpd_use_tls=yes
    smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    smtpd_tls_security_level=may
    smtpd_tls_protocols = !SSLv2, !SSLv3

    前面两行指定证书和私钥的在文件系统中的路径,第三行启用TLS加密,第四行和第五行指定缓存文件。第六行的意思是对方邮件服务器或邮件客户端可以选择加密,也可以不加密。最后一行指定不可以使用SSLv2和SSLv3来加密,只允许TLSv1.0以上版本的加密方式。因为这两种加密方式早就过时了,SSLv2在1994年发布,SSLv3在1996年发布。

    重新加载Postfix配置文件

    配置完Postfix后,输入下面的命令重新加载Postfix配置文件:

    sudo /etc/init.d/postfix reload && sudo postfix reload

    安装并配置Dovecot

    接下来我们要安装并配置Dovecot。Dovecot是一个IMAP/POP3服务器。有了Dovecot,我们才能在自己的邮件客户端读取我们的邮件。

    安装Dovecot

    输入下面的命令安装Dovecot核心软件包以及IMAP服务器。我们不安装POP3服务器,因为POP3使用不方便。

    sudo apt-get install dovecot-core dovecot-imapd

    查看Dovecot的版本:

    user@debian:~$ sudo dovecot --version
     2.2.13

    配置Dovecot

    先备份然后编辑/etc/dovecot/dovecot.conf文件:

    sudo mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
    sudo vi /etc/dovecot/dovecot.conf

    现在,把下面的内容粘贴到空白的/etc/dovecot/dovecot.conf文件中。

    disable_plaintext_auth = no
    mail_privileged_group = mail
    mail_location = mbox:~/mail:INBOX=/var/mail/%u
    userdb {
          driver = passwd
    }
    passdb {
         args = %s
         driver = pam
    }
    protocols = " imap"

    第一行启用了明文+TLS验证,第二行告诉dovecot以mail系统组的权限访问邮箱,第三行告诉了dovecot邮箱在文件系统中的路径。userdb和passdb让dovecot以Unix验证方式来验证用户。最后一行让dovecot只启用IMAP服务。

    下面,让dovocot添加一个垃圾箱和已发送文件夹。在/etc/dovecot/dovecot.conf文件中添加如下内容:

    protocol imap {
          mail_plugins = " autocreate"
    }
    plugin {
          autocreate = Trash
          autocreate2 = Sent
          autosubscribe = Trash
          autosubscribe2 = Sent
    }

    然后我们需要让dovecot打开一个Unix Socket,以便和Postfix之间进行验证。在文件中添加如下内容:

    service auth {
          unix_listener /var/spool/postfix/private/auth {
          group = postfix
          mode = 0660
          user = postfix
        }
    }

    最后,配置SSL证书和私钥:

    ssl=required
    ssl_cert = </etc/ssl/certs/unified.crt
    ssl_key = </etc/ssl/private/my-private-decrypted.key

    保存文件后退出文本编辑器

    为root设置一个别名

    根据SMTP RFC的规定,所有的邮件服务器上都必须要有postmaster这个邮箱账号。另外一些人期望你的邮件服务器上有hostmaster, abuse, webmaster这些邮箱账号。在/etc/aliasese这个文件中,系统默认设置了很多个别名。postmaster, nobody, hostmaster等这些都是root的别名,所以当别人往这些邮箱账号发邮件时,会被转发到root的邮箱。

    mailer-daemon: postmaster
    postmaster: root
    nobody: root
    hostmaster: root
    usenet: root
    news: root
    webmaster: root
    www: root
    ftp: root
    abuse: root
    noc: root
    security: root

    如果你想将root的邮件转发给另外一个用户,比如username , 那么在/etc/aliases末尾添加下面一行:

    root: username

    将username更改成你的用户名。保存/etc/aliases文件后,我们需要重新生成一个/etc/aliases.db文件,执行下面的命令:

    sudo newaliases

    root的邮件被转发后,root邮箱不会保留被转发的邮件。

    重启Postfix和Dovecot

    输入命令

    sudo service postfix restart && sudo service dovecot restart

    sudo systemctl restart postfix && sudo systemctl restart dovocot

    在邮件客户端测试我们的邮件服务器

    重启之后,我们就可以在桌面电脑使用邮件客户端来测试我们的邮件服务器了。推荐使用thunderbird邮件客户端。邮箱的用户名和密码就是服务器的用户名和密码。如下图,thunderbird自动检测到了linuxbabe.com邮件服务器的IMAP和SMTP服务器配置,并能正确收发邮件。

    Mail Account Setup_028

    总结

    在这篇教程中,我们首先安装了Postfix。Postfix是一个MTA,也可以叫做SMTP服务器。安装好Postfix后,我们可以登录服务器收发邮件。然后,我们对Postfix做了一些配置,并启用了MSA模块。MSA可以让我们在邮件客户端发送邮件。接下来我们安装了SSL证书。之后我们安装了Dovecot,Dovecot是一个POP3/IMAP服务器。我们的邮箱客户端连接到POP3/IMAP服务器后便可以查看邮件服务器上接收到的邮件。我们还设置了邮箱账号的别名以方便对邮件的接收和管理。

    转载自:

    https://www.linuxdashen.com/debian-8-server%E6%90%AD%E5%BB%BApostfixdovecot%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8

    展开全文
  • 解决中小局域网内邮件服务的问题,使用postfix与dovecot搭建SMTP和POP3服务器。 安装服务器组件 apt-get install –y postfix dovecot-pop3d mailutils 其中mailutils,是mail命令程序。如果不用命令行方式的话...

    解决中小局域网内邮件服务的问题,使用postfix与dovecot搭建SMTP和POP3服务器。

    安装服务器组件

    apt-get install –y postfix dovecot-pop3d mailutils

    其中mailutils,是mail命令程序。如果不用命令行方式的话,可以不安装。

    安装postfix的时候,会提示要求选择邮件服务器类型,这里选择Internet Site。

    No configuration:
        Should be chosen to leave the current configuration unchanged.
    Internet site:
        Mail is sent and received directly using SMTP.
    Internet with smarthost:
        Mail is received directly using SMTP or by running a utility such as fetchmail. Outgoing mail is sent using a smarthost.
    Satellite system:
        All mail is sent to another machine, called a 'smarthost', for delivery.
    Local only:
        The only delivered mail is the mail for local users. There is no network.

    进而会提示输入邮件域名,这里按需填写。(例如mail.wa.cn)

    配置环境

    邮件服务器IP地址=192.168.31.73,测试用户名为test(密码123)、duanjsh(密码123)。测试PC机一台,与邮件服务器三层可达。

    修改/etc/hosts,把相应域名加入到hosts中。

    vim /etc/hosts 
    192.168.31.73   mail.wa.cn wa.cn

    检查一下/etc/mailname的值是不是安装时配置的。

    cat /etc/mailname
    mail.wa.cn

    创建一个账户进行测试:

    mkdir -p /home/test
    useradd test -d /home/test -g users -s /bin/bash
    chown test:users /home/test -R
    passwd test

    postfix配置

    postfix的主要配置文件是/etc/postfix/main.cf,这里按需修改。我把修改项压缩到0或1步,即修改其中的mydestination项。后面会提到这项。

    dovecot配置

    dovecot配置都在/etc/dovecot/下,我修改了2处:

    vim /etc/dovecot/conf.d/10-auth.conf
    #disable_plaintext_auth修改为
    disable_plaintext_auth = no
    
    vi /etc/dovecot/conf.d/10-ssl.conf
    #ssl修改为
    ssl = no

    重启两个服务

    service dovecot restart
    service postfix restart

    安装配置客户端

    可以采用foxmail来作为邮件客户端。

    新建账号,其他邮箱,手动设置。接收服务类型选择POP3,用户名和密码填邮件服务器内的具体用户名(test)与密码(123)。POP3和SMTP服务器地址都填写具体的服务器地址,这里假设是192.168.31.73,端口110和25均为默认。

    账号管理,Email地址修改为test@mail.wa.cn。

    测试

    当foxmail同时配置多个用户时,在左侧可以使用A账号发邮件给B账号。

    在main.cf中destination配置了mail.wa.cn,该postfix仅能接收mail.wa.cn,如果收件人是test@155.com,发送就会失败。这个destination配置项,仅监察收件人,不检查发件人。如果155.com域名不在destination中,使用test@155.com这个邮件地址作为发起方,是可以的。如果要postfix接收多个域名,就要修改destination项。

    telnet测试

    如果没有foxmail这种客户端,也可以使用telnet的几个命令进行测试:helo、mail from、rcpt to、data。

    root@deb10:/etc/postfix# telnet localhost  25
    Trying ::1...
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 deb10 ESMTP Sendmail 8.15.2/8.15.2/Debian-14~deb10u1; Sun, 9 Feb 2020 18:08:20 +0800; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
    helo abc
    250 deb10 Hello localhost [127.0.0.1], pleased to meet you
    mail from:root@localhost    
    250 2.1.0 root@localhost... Sender ok
    rcpt to:duanjsh@localhost
    250 2.1.5 duanjsh@localhost... Recipient ok
    data
    354 Enter mail, end with "." on a line by itself
    hey duan, you are so smart!
    .
    250 2.0.0 019A8K2I002817 Message accepted for delivery

     

    展开全文
  • Debian上用 Exim配置邮件服务器

    千次阅读 2006-08-11 09:50:00
    0 声明 本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan W. Stumpel, Oegstgeest, The Netherlands。 这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel....
     0 声明 



       本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan
    W. Stumpel, Oegstgeest, The Netherlands。

       这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html




    1 简介

       我想现在一个再普通的单位,也会需要用到电子邮件。我所在的企业,已经到了无法离开email的地步——每当邮件服务器出现问题,我的电话都会被打爆。在M$平台上,邮件服务器市场基本上被两个软件占领:M$的Exchange和Lotus的Domino/Notes。这些软件所花费的费用,实在不小。而Unix平台上,我们有很多选择,而且都是免费的。

       在Debian里面,我们不用Sendmail,也不用Qmail和Postfix,而是用Exim,这是Debian的缺省邮件服务器,连基本系统都附带了这个软件。理由我就不说了,反正,Debian推荐的,不会错。



    1.1 我们将实现的功能

      ◆
    局域网中的用户可以实现本地邮件的发送和转发。

       ◆ 发往局域网以外的邮件有正确From:<邮件地址>,以使外部的邮件能够正确的回复。

       ◆
    电子邮件账号是所有本地子网用户所共享,但是要实现每个用户仅仅能够收到自己的邮件。

       ◆ exim作为邮件的收发代理(它比sendmail好配置的多)。

       ◆ mail作为linux端的邮件客户程序。

       ◆ Microsoft Outlook Express 作为Win2000端的邮件客户程序(同样你也可以使用其它的类似工具,比如Foxmail)。

       ◆ qpopper 作为POP3服务器, 用来把邮件从Linux系统中转移到Win2000机器上。

       ◆ fetchmail 用来从互联网上收取邮件。

      我在两台机器上(分别安装Linux和Win2000系统)做的测试,当然,win9x/NT/XP都可以,而且两台机器都是Linux的话也当然可以。这个方案,应付一个中小型的办公室应该绰绰有余。

    1.2 网络和命名


       在这篇文章中我假定以下的名字(您实际应用时应该做写修改,以适应您的实际情况):

      ◆ 拥有者和系统管理员的名称 kanaka Leng。

       ◆ Linux机器名为 Debian。

       ◆ Win2000 机器名为 Notepad 。 通常使用者为 ganghua Leng。

       ◆ kanaka 在 Debian 机器上的注册用户名为 kanaka。

       ◆ ganghua 在 Debian 机器上的注册用户名为 ganghua。

       ◆ ganghua 在 Notepad 机器上的注册用户名也为 ganghua。
    她的在linux下的Debian机器和 Win2000上的口令也相同。

       ◆
    我们公司的局域网通过宽带连接互联网,当然你通过普通拨号也可以。

       ◆ kanaka 和 ganghua 都使用电子邮件地址:kanaka@yeah.net。

       ◆ kanaka到POP3收信的口令为kanakapswd。

       ◆ ISP的发送邮件的邮件服务器为smtp.yeah.net。

       ◆ ISP的接受邮件的邮件服务器为pop3.yeah.net。

      机器Debian和Notepad都属于一个域,域名为test.com。
    这个域名是我们内部搞测试用的,我们并没有注册这个域名,
    因而对于外部网络来说, 并不能直接识别这个域名。

      此外,我还假设内部网络已经正常工作,
    并且已经拥有使用daild实现的非永久拨号连接,或者宽带网连接。
    在Debian机器上也没有安装DNS服务。/etc/resolv.conf中只是加入了ISP提供的两个DNS服务器的地址。同样的设置也要加在Notepad机器上的TCP/IP设置中。

    1.3 邮件地址


    在"To:"和"From:"中指定邮件地址是一封邮件的基本组成部分,
    此外还有更多的内容。 举例来说:

    To: ganghua Leng <kanaka@yeah.net>

    'ganghua Leng'是一个"real-name part"(真实姓名部分)。
    这是通过撰写电子邮件的程序加上的。
    这个部分就是将邮件发送给ganghua本人的依据。 注意:如果在real-name
    part中有句点存在, 邮件地址必须用"符号包围起来(例如:"kanaka
    C.Leng")。 您可以用man mailaddr参考一下相关的帮助页。

    2 安装



       由于我们已经安装了Debian基本系统,而Debian基本系统里面含有exim和mail这两个软件,所以我们只需要安装这两个:fetchmail、fetchmailconf和qpopper。


    #
    apt-get install fetchmail fetchmailconf qpopper

      其中,fetchmailconf是用来配置fetchmail的工具。

       系统会有一些问题提问你。当问你是否以root身份运行system-wide
    fetchmail时,答Yes。其他的都选默认值。



    3 配置



    3.1 配置Debian的hosts



       Debian机器上的/etc/hosts文件内容如下:


    127.0.0.1 localhost

    192.168.1.1 Debian.test.com Debian

    192.168.1.2 Notepad.test.com Notepad

    3.2 配置exim


       在Debian下,这一切都是由eximconfig程序来完成的。


    #
    eximconfig

      程序将问到一些问题,你可以参考下面的回答:


       ◆ 你的系统是一个Internet主机(选择1,虽然你在局域网。这样你可以发邮件到互联网)。

       ◆ “显示的邮件域名”为test.com。

       ◆ 系统有其他的名称吗?你可以回答 Debian:localhost。

       ◆ 你不想转发任何非本地域的邮件。保持none,按回车。

       ◆ 你想转发的本地域地址为192.168.1.0/16。

       ◆ 处理向外转发的邮件的smarthost 地址为 smtp.yeah.net。

       ◆ 系统管理员的邮件为kanaka(非root)。



    3.3 配置Win2000



    3.3.1 hosts



      在Notepad机器上的c:/winnt/system32/drivers/etc/hosts文件中的内容跟Debian机器中的/etc/hosts文件的内容一样。


    127.0.0.1 localhost

    192.168.1.1 Debian.test.com Debian

    192.168.1.2 Notepad.test.com Notepad



    3.3.2 邮件客户端



       在Microsoft Outlook Express(或者你在Win2000使用的其他此类的邮件客户程序)。
    必须都将Debian输入作为SMTP 邮件服务器和POP3服务器。 在“POP3账号名”和“POP3口令”输入框,
    输入用户名ganghua和她在linux下的口令。 输入姓名为ganghua Leng;
    电子邮件地址为 ganghua@test.com。
    注意电子邮件地址必须以本地域做后面的地址。



    4 小测试



       通过上述的设置,本地的用户之间应该已经可以实现相互的发送和回复信件了。在Outlook
    Express里面的测试我就不说了,我来说一下在Debian上面用mail来做测试。


    #
    mail kanaka

    Subject:
    This is my First test-mail!

    Hi,kanaka,

    This is the first time that I send a mail by exim.

    .

    Cc: kanaka@yeah.net

    #

      上面我们给本地的kanaka发了一封邮件,并抄送给了互联网上的kanaka@yeah.net。注意,要结束一封信的内容,在新的一行输入“.”就可以了。我在Win2000上用Outlook
    Express就可以收到发给kanaka的信;而发给kanaka@yeah.net的信,我到freemail.yeah.net站点上去,也收到了。



       现在test.com已经真正成为了一个具有邮件转发功能的本地域,而且可以发送邮件到互联网上的kanaka@yeah.net。但是,一个格式为From:kanaka@test.com的地址显然是无法被外部用户回复的,
    因为对于外部网络来说, test.com是一个不存在的(因而不合法)的域名。因此,我们还需要修改From:的地址。

    5 修改 From: 的地址


       在往互联网上发送邮件的时候,为了他们可以正确的回复,我们必须把本地的From:地址格式改变成为一个合法的电子邮件地址。
    借助于exim的"传送过滤器", 我们可以实现这一功能。
    往外部转发的邮件经过这个传送过滤器以后, From:
    中的地址就会被改变, 而对于本地邮件则没有什么影响。

      下面的过滤器将实现这个恶作剧式的技巧,
    首先我们确定我们要改变的地址永远包含在"<>"符号之内。
    虽然不能完全保证, 但是通常的邮件程序:mail甚至Microsoft
    Outlook Express都是生成这种格式的电子邮件地址。



    5.1 创建outfit文件



       我们来创建一个文件,/usr/bin/outfit,内容如下:



    #!/usr/bin/perl
    while (<STDIN>) {
    if (/^From: /) {
    s/<.*>/<'kanaka@yeah.net'>/;
    print "$_"; last;
    }
    print "$_";
    }
    while (<STDIN>) { print "$_"; }



       把这个文件放到/usr/bin目录中,命名为outfit,不要忘记把上面的电子邮件地址换成你自己的电子邮件地址!



       然后,通过下面的命令chmod +x /usr/bin/outfit加上可执行的权限。


    #
    chmod +x /usr/bin/outfit

    5.2 修改exim.conf



       打开/etc/exim/exim.conf,找到下面一行:



    driver = smtp

       在它的下面加上两行,就成了:

    driver = smtp
    headers_remove = "sender"
    transport_filter = "/usr/bin/outfilt"



       通过上述对/etc/exim.conf文件的修改,无论何时发送一封电子邮件到本地域以外时,都可以被exim正确的投递了。如果你使用的是拨号网络,那么Exim(通过daild)每发送一次邮件,就会向外拨一次号。而我们公司的宽带24小时在线,所以邮件每次都是直接就发出去了。

    6 配置Fetchmail


       我们需要运行fetchmailconfig,来在你的主目录里产生一个叫.fetchmailrc的文件,否则你就不能使用fetchmail。
    fetchmial将从互联网的邮件服务器上取回邮件(并转交给exim再做本地投递)。


    #
    fetchmailconfig

    fetchmialconf must be run
    under X

      你看到了吧,它说fetchmialconf这个程序比如在X下面运行。唉!我们要把debian做服务器用,而服务器根本不需要安装X的,我们不会为了配置fetchmail再去安装一个X系统和一个窗口管理器吧!好吧,那么我们就手工写这个文件吧,其实也很简单。

       由于我们是要把邮件接收到kanaka在本地的信箱里面,所以应该在kanaka的主目录里面产生这个.fetchmailrc,所以我们切换到kanaka用户,再进行操作:


    # su
    kanaka

    $ cd

    $ nano
    .fetchmailrc

       然后,输入以下内容,存盘退出即可:



    set postmaster "postmaster"
    poll pop3.yeah.net with proto POP3 user "kanaka@yeah.net" password "kanakapswd"



       .fetchmailrc文件可以在不同用户之间相互拷贝,只要把文件的属主设置成相关的用户即可。不过把用户的邮件密码用明码写在这个文件中显然是一种不明智的方式。
    或许应该有更好的方法,请大家告诉我啊,呵呵。

       然后,使用fetchmail命令来把邮件从互联网上拖到本地来:


    $
    fetchmail

    1 message for kanaka@yeah.net at
    pop3.yeah.net (1648 octets).

    reading message kanaka@yeah.net@pop3.yeah.net:1 of 1 (1648 octets) .
    flushed

      然后,你可以在win2000的Outlook Express里面,从本地接收这些邮件。

    7 修改exim的投递限制


       Exim 缺省的一次投递邮件的最大数量为100封。
    你可以根据你们单位的实际情况,修改这个值。如果需要取消这个限制,就把它改为0,不过小心受到攻击:



    smtp_accept_queue_per_connection = 0

    8 综合测试



      你可以在Debian上和Win2000上多发几封邮件,做一下测试。




    9 TODO



      在下一个版本中,我们将描述如何使用.forward文件,实现转发,把信件正确的投递邮件给某个用户,而不是一下子都发给kanaka。

       我们还将描述,如何建立一个webmail系统。





    10 结束语



       本文是《Debian服务器设置入门》系列教程之第三章,建议您按照顺序阅读,有问题可以和作者 kanaka 联系。


    11 参考文献


      本文在开头就声明,本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan
    W. Stumpel, Oegstgeest, The Netherlands。

       这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html

       之所以这样,是因为,这篇文章对我们来说太珍贵了,除了她,我没有找到其他关于exim的资料。

       非常感谢原文作者,以及翻译者!


    展开全文
  • 如果debian中安装了exim4,先卸载exim4: apt-get remove exim4 安装postfix apt-get install postfix 安装完成后就可以测试下,PHP代码如下: public function index(){ $isok=mail('你的接受...
    1. 如果debian中安装了exim4,先卸载exim4:
      apt-get remove exim4
    2. 安装postfix
      apt-get install postfix
    3. 安装完成后就可以测试下,PHP代码如下:
      public function index(){
      	$isok=mail('你的接受email地址','test','test');
      	echo $isok;
      }
      php中的mail函数用法请参考php手册。
      这时收到的邮件发件人大致是:www-data <www-data@你的hostname>
    4. 为了不让别的邮件服务器认为是垃圾邮件,需要做下面几步域名相关的操作:
      • 添加A记录
        mail	A	默认	你的服务器ip	-	120
      • 添加MX记录
        @	MX	默认	mail.你的域名.	1	600
      • 查看mx记录是否生效
        host -t mx taozhoubian.net
      • 添加TXT记录
        @	TXT	默认	v=spf1 mx a:mail.taozhoubian.net ~all	-	600	
    5. 规范发件人的尝试,我们想把发件人显示自己设定的,比如“osEye <no-reply@oseye.net>”,我们做了如下尝试
      • 修改mail参数:
        $isok=mail('你的接受邮件地址','test','test',null,'no-reply@你的域名');
        发件人没任何改变
      • 设置postfix的hostname和domain:
        postconf -e "myhostname=tazhoubian.net"
        postconf -e "mydomain=mail.tazhoubian.net"
        postfix reload
        收到的邮件头:
        发件人:www-data <www-data@你的hostnamelinode.com>
        邮件原文:
        	Received: from 你的域名 (unknown [你的服务器IP])
        	by newmx61.qq.com (NewMx) with SMTP id 
        	for <你的接受邮件地址>; Tue, 13 Aug 2013 11:13:16 +0800
        	X-QQ-SSF: 110000000000000001F000020000001
        	X-QQ-mid: mx61t1376363597tnge1fsmw
        	Received: by 你的域名 (Postfix, from userid 33)
        	id 1AFCF38D3E; Tue, 13 Aug 2013 11:13:16 +0800 (CST)
        	To: 你的接受邮件地址
        	Subject: test
        	X-PHP-Originating-Script: 0:testtemp.php
        	Message-Id: <20130813031316.1AFCF38D3E@你的域名>
        	Date: Tue, 13 Aug 2013 11:13:16 +0800 (CST)
        	From: www-data@你的hostnamelinode.com (www-data)
        
        
        	test
      • 设置debian 的hostname:
        hostname 你的域名
        发件人没任何改变
      • 重新配置postfix
        dpkg-reconfigure postfix
        其中“System mail name”填写你的域名;“Root and postmaster mail recipient”填写空;“other destinations to accept mail for”增加你的域名。
        发件人没任何改变
      • 经过查资料,发现还是要从mail函数入手,于是修改mail参数:
        $isok=mail('你的接受邮件地址','test','test',null,'-fno-reply@你的域名');
        收件人改变了:www-data <no-reply@你的域名>
      • 继续尝试mail函数:
        $isok=mail('你的接受邮件地址','test','test',null,'-Fabc');
        收件人改变了:abc <www-data@你的hostnamelinode.com>
      • 再来一个-f-F结合使用的:
        $isok=mail('你的接受邮件地址','test','test',null,'-Fabc -fno-reply@你的域名');
        收件人改变了:abc <no-reply@你的域名>
        哈哈,终于成功了。
    6. 如果要限制外来主机访问smtp服务,修改/etc/postfix/main.cf里的
      inet_interfaces=all
      改为
      inet_interfaces=localhost
    7. 屏蔽头部 postfix received:by (Postfix from userid.....
      • 在/etc/postfix/main.cf增加
        header_checks = regexp:/etc/postfix/header_checks
      • 编辑或新建/etc/postfix/header_checks
        /^Received:/         IGNORE
      • 重启postfix:
        /etc/init.d/postfix restart

    转载于:https://www.cnblogs.com/zhaiqianfeng/p/4618512.html

    展开全文
  • 第一步 #apt-get update #apt-get upgrade #apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules dovecot-imapd dovecot-pop3d dovecot-common ...配置邮件服务器 首先,停掉这三项服务:  #...
  • 本教程将讨论如何在Debian(或Ubuntu)配置一个可工作的邮件服务器。我们知道在邮件服务器使用的主要协议有SMTP、POP和IMAP。在本教程中,SMTP协议使用postfix,POP/IMAP协议使用dovecot。两者都是开源的、稳定的和...
  • Docker快速搭建邮件服务器Modoboa

    千次阅读 2018-12-21 11:12:57
    转载来源:...   Docker快速搭建邮件服务器Modoboa     DockerFile: FROM debian:jessie COPY files / WORKDIR /usr/src/app RUN set -ex &amp;&amp; \ apt-get u...
  • 网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇。本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器。 说到邮件服务器,网上有许多不同解决方案。Window操作系统下...
  • Ubuntu搭建邮件服务器postfix

    千次阅读 2018-05-10 09:32:52
    比如,你的Linux系统的主机名可能是linux,Debian, Ubuntu等。FQDN (Fully Qualified Domain Name) 由两个部分组成,节点名和域名。例如,mail.linuxdashen.com 就是FQDN形式的主机名。mail是节点名,linuxdashen....
  • 搭建 Linux 下 GitLab 服务器

    万次阅读 热门讨论 2014-07-31 17:09:14
    这两天因为项目需求需要搭建一个GitLab服务器,遇到了很多问题,参考了很多网络资料,终于搭建成功,在此把这个过程记录一下,利人利己。   一、最终目的  1,在Linux下创建GitLab服务器,客户端能够完成git 的...
  • 以最佳的方式搭建基于 Linux/BSD 和开源软件的邮件服务器。始于 2007 年。 支持 Red Hat Enterprise Linux、CentOS、Debian、Ubuntu、FreeBSD、OpenBSD 只需几分钟,iRedMail 即可为您部署一台完全基于开源软件、...
  • GitLab 服务器搭建

    千次阅读 2018-02-09 13:57:32
    GitLab 服务器搭建 GitLab 服务器搭建 需求 服务器搭建 搭建环境 虚拟机VMware 12 虚拟机选择 虚拟机迁移1 Debian 安装 VMware Tools 网络连接 Docker 系统要求 卸载旧版本 安装 Docker CE GitLab 安装 ...
  • debian通过mailx发送邮件

    千次阅读 2017-05-13 17:08:46
    搭建的nagios,邮件报警可以通过以下几种方式: 第一:使用短信通道 第二:使用服务器本身的邮箱进行发邮件(例如centos使用sendmail,debian使用exim4) 第三:使用外部邮箱通过smtp发送。 第一种当然最好,可是...
  • debian apache 介绍 (Introduction) The Apache HTTP server is the most widely-used web server in the world. It provides many powerful features including dynamically loadable modules, robust media ...
  • 1,安装 postfixsudo apt-get install postfix安装postfix,配置界面出来后选择Internet Site,System mail name填写 名称2,安装一个 mailx 用于测试sudo apt-get install mailxerrsudo: unable to resolve host ...
  • Debian本地源的搭建方法

    千次阅读 2016-03-24 17:47:11
    一些自己开发或者修改的debian程序,如果想使用apt-get工具进行安装的话,需要自己搭建debian软件源,本文简要介绍一下搭建方法。
  • 构建邮件服务器 我最近一直在研究一个处理电子邮件框中数据的应用程序。 老套! 最好的测试方法是什么? 我们可以模拟邮件服务,并偶尔对真实邮件服务器进行烟雾测试。 这种方法很好,但是对于大多数构建,邮件...
  • 在 Linux 中,可以配置运行一个 Rsyslog 服务器来中央化管理日志,在流行的服务端—客户端模式中,通过 TCP 或者 UDP 传输协议基于网络来发送日志信息,或者从网络设备、服务器、路由器、交换机、以及其它系统或...
  • 网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇。本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器。 说到邮件服务器,网上有许多不同解决方案。Window操作系统下...
  • Exim4邮件服务器

    千次阅读 2010-10-22 23:32:00
    10.4. Exim4邮件服务器 10.4.1. 邮件系统基础知识 在实现安装邮件服务器之前,让我们先来学习一些邮件系统的基础知识。 一个完整的邮件系统应该包含三部份内容:邮件用户代理(MUA,Mail User Agent)...
1 2 3 4 5 ... 20
收藏数 1,951
精华内容 780
关键字:

debian搭建邮件服务器