您现在的位置: 爱51代码网 >> 范文 >> 文章正文
SMTP server problem No route to host

smtp是出现的错误:SMTP server problem No route to host。

查看了一下移植后的linux系统中好像没看到25端口的调用!

# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
tcp        0      0 0.0.0.0:8553            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8554            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8555            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8556            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8557            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
netstat: no support for `AF INET6 (tcp)' on this system.
netstat: no support for `AF INET6 (udp)' on this system.
netstat: no support for `AF INET6 (raw)' on this system.
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    444    @/org/kernel/udev/udevd
#

SMTP server problem No route to host这个错误是是因为没有打开25号端口造成的吗?
linux移植中怎么打开25端口?
今天又是富有激情的安装与arm板移植的篇章。因为前天答应帮学长移植smtp并写个移植笔记,所以这两天抽时间把这东西搞定了。SMTP的移植不是非常轻松,所以我还是把笔记贴出来,也好让大家少走点弯路,但是大家最好自己先试试独立安装移植看看,如果是赶时间或者真的没办法了就来参考参考吧!

一、首先介绍一下SMTP(Simple Mail Transfer Protocol)

         SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。

       今天我们将要安装移植的smtp0.8.5就是smtp协议的API库包。注意哦,smtp只是一个协议,是邮件服务系统中的一部分,smtp完成邮件系统中的发送任务。

 

二、安装前准备:

1.源码包下载地址:http-//developer.berlios-de/project/showfiles.php?group_id=149

2.我的安装环境:

        UBUNTU12.04

        arm-linux-gcc4.3.3

        glib2.40.0.tar.xz

        libsmtp-0.8.5.tar.bz2

3.glib for arm and pkg-config支持

         参考我的另一篇文章:http-//blog-csdn-net/jiebaoabcabc/article/details/24439583

         由于smtp库依赖于glib或者说就是建立在glib上的,所以smtp在编译时,系统也要有glib的库(交叉编译时也需要交叉工具链编译出来的glib库)。

4.glib2.0 for x86支持:

         ubuntu系统可以通过apt-get install libglib2.0安装glib2.0连带套件

 

三、开始安装smtp forx86:

1.解压缩源码,并建立安装路径,安装目录下应该包含bin、include、lib目录

2.阅读README和INSTALL:

       README:主要介绍0.8.5版本与之前版本相比更加适合嵌入式环境而且移植性有所提高。

         INSTALL:简单介绍安装过程,重点是测试用testapp.c的使用,这个我会在后面测试时做稍微的修改。

3.跟一般的安装一样,开始配置makefile:

       先来到smtp for pc的解压目录下

       键入命令:CC= gcc ./configure --prefix=/usr/local/smtp/   其他的配置都让命令自己去测试吧。

       得到Makefile后修改几个Makefile:

       修改Makefile:

       21   [

       CPPFLAGS = `pkg-config --cflags glib-2.0`

       CFLAGS = $(CPPFLAGS) -g -O2

       LDFLAGS = `pkg-config --libs glib-2.0`

       LIBS =

       24   ]

 

       修改./smtp/Makefile:

       33   [

       CFLAGS = -I. -I.. `pkg-config --cflagsglib-2.0` -g -O2 -DUSE_MIME

       LDFLAGS = -L. `pkg-config --libsglib-2.0`

       34   ]

 

       修改./examples/Makefile:

       32   [

       CFLAGS = -I. -I../include `pkg-config--cflags glib-2.0` -g -O2

       LDFLAGS = -L. -L../smtp -L../mime`pkg-config --libs glib-2.0`

       33   ]

      40   [

       ifeq (yes,yes)

      SOURCES=smtpmail.cmultipart.c singlepart.c

      OBJS=smtpmail.omultipart.o singlepart.o

      APPS=smtpmailmultipart singlepart

      LIBS= -lsmtp -lsmtp_mime `pkg-config --libs glib-2.0`

       else

      SOURCES=smtpmail.c

      OBJS=smtpmail.o

      APPS=smtpmail

       LIBS = -lsmtp `pkg-config --libsglib-2.0`

       endif

       51   ]

       修改Makefile的主要目的在于我的pc上没有glib-config,而且pkg-config的功能(引导编译器找到必要文件路径)与其相同,那就使用pkg来代替他。

4.make

     

       问题一:gcc -I. -I../include `glib-config --cflags` -g -O2-DUSE_MIME   -c -o libsmtp_comm.olibsmtp_comm.c

/bin/sh: 1:glib-config: not found

       解:如何查看linux系统上是否安装了glib:

              -----使用dpkg -l | grep glib命令查看是否已安装glib

       这个问题主要是因为编译器找不到glib-config或者pc上没有glib-config,可以使用pkg代替。

 

       问题二:make[1]: 正在进入目录 `/home/smtp/smtp-pc/libsmtp-0.8.5/examples'

gcc -I.-I../include -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/glib-2.0`pkg-config --cflags` -g -O2 -o smtpmail smtpmail.o -L. -L../smtp -L../mime`pkg-config --libs`  -lsmtp -lsmtp_mime-lglib

Must specifypackage names on the command line

Must specifypackage names on the command line

/usr/bin/ld:cannot find -lglib

       解:`pkg-config--libs glib-2.0`

       这个问题主要是Makefile没有将路径替换干净,哪里报错就去找对应目录下的Makefile,修改完整便是。

5.make install

         这样smtp forx86就安装完了,下面我们来测试一下。

 

四、测试smtp for x86

1.postfix服务器安装

         (mail服务器想搭建的好是非常困难的,但是测试用用的配置还是简单的,想要在linux上建站的可以看看鸟哥的私房菜,看了下顿时感觉自己是战五渣- -|||)

         由于smtp也是典型的两段协议,smtp客户端的测试需要一个也支持smtp协议的mail服务器。大家可以使用网上免费邮箱的服务器,比如smtp.qq-com。telnet smtp.qq-com 25可以测试smtp的一些收发机制,不过这些免费邮箱都需要登录,导致我测试程序一直过不去,所以我决定安装个本地的mail服务器。postfix是sendmail的衍生产品,而且功能强大、配置方便,所以我选择他来做我的服务器。

         apt-getinstall postfix就可以安装postfix,在配置菜单中选择服务器的使用范围(我选了本地配置)和服务器域名(这个随便写,比如xxx.xxx-com),这样安装就完成了。

         鸟哥的私房菜中也对postfix进行了详解,所以我就不多介绍了,主要讲一下我的/etc/postfix/main.cf配置。

2.main.cf配置

         /usr/share/postfix/main.cf.dist是这个重要配置文件的说明书

         照着里面的配置,我修改了:

         35     +mynetworks = 192.168.0.0/24 127.0.0.0/8       运行接收的网段

         38  inet_interfaces = all   监听所有IP

         保存完好serverpostfix restart重启服务器

         netstat-ln | grep 25可以看看25端口的监听是否开始,看到0.0.0.0:25说明服务良好

3.修改examples/singlepart.c

    &n

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    fastreport提示没有找到fr_class
    怎么用sed或awk来进行替换XM
    三星4412开发板uboot烧写板子
    redhat 2.6 (santigo 5.6) v
    shell如何实现自动填写操作执
    linux shell 文件配置sh:co
    shell script语法一定要加pa
    Fedora17 内核版本和uname -
    kvm虚拟机网卡闪断
    kvm虚拟机网卡闪断
    #pragma pack(1) 取消默认对
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |