移植mutt smtp到arm开发板(让开发板支持mutt发邮件)

我用的是6410开发板,4.3.2的交叉编译工具,搞了一个多礼拜,各种纠结各种查资料终于把让开发板能使用mutt发邮件了(内牛满面~~~哭

以下灰色字体为常会碰到的错误(都是我移植过程中碰到的问题和解决办法)

笔者辛苦写的资料,转载请注明出处:http://blog.csdn.net/l461269717/article/details/8061576 (小默)

 

【软件的开发环境和资源】

交叉编译工具:arm-linux-gcc , arm-linux-ar , arm-linux-ranlib , arm-linux-strip

要实现一个邮件收发客户端,需要下载下面4个文件:

mutt-1.5.21.tar.gz
下载地址:http://www.mutt.org/download.html

openssl-1.0.0d.tar.gz
下载地址:http://www.openssl.org/source/

msmtp-1.4.24.tar.bz2
下载地址:http://sourceforge.net/projects/msmtp/files/msmtp

ncurses.tar.gz
下载地址:ftp://invisible-island.net/ncurses/ 

【软件的编译】

openssl 交叉编译步骤:

配置编译脚本
./config no-sse2 no-asm shared --prefix=/usr/local/arm_openssl

创建交叉编译后目标的生成目录
mkdir /usr/local/arm_openssl

修改生成的Makefile文件中的 CC , AR , RANLIB
CC = arm-linux-gcc
AR = arm-linux-ar
RANLIB = arm-linux-ranlib

编译
make

安装
make install

 

msmtp 交叉编译步骤:

配置编译脚本
./configure --host=arm-linux --with-ssl=no --with-libidn=no --with-gnome-keyring=no CC=arm-linux-gcc

编译
make

 

libncurses 交叉编译步骤:

配置编译脚本
./configure --prefix=/usr/local/arm_ncurses CC=arm-linux-gcc --host=arm-linux

创建交叉编译后目标的生成目录
mkdir /usr/local/arm_ncurses

编译
make

安装
make install

貌似安装停在,我强制中断了

       

 

出错原因:

     在我的 x86 Host主机端的 ncurses 版本为ncurses.i386 5.5-24.20060715 

但是被我编译的版本为 ncurses-5.7 用于 ARM,也就是说: 版本 5.5.24 无法对 ARM编译,所以我不得不升级到版本5.7的ncurses -至我的编译主机,再重新编译

解决办法:

    通过ncurses-5.7源代码编译主机上的版本并安装,如下:

1tar -zxf ncurses-5.7.tar.gz

2cd ncurses-5.7
3./configure
4make
5sudo make install
安装顺利,之后再重新执行
./configure --prefix=/usr/local/arm_ncurses CC=arm-linux-gcc --host=arm-linux &&make &&make install即可
 

 

安装之后在 /usr/local/arm_ncurses 目录下会生成 bin/ 、include/ 、lib/ 、man/ 、share/ 5个目录,
其中lib目录下默认生成的是静态库。

 

mutt 交叉编译步骤:

配置编译脚本(注意,要打开mutt自带的邮件接收功能需要configure的时候带上参数 --enable-pop)
./configure --prefix=/usr/local/arm_mutt --host=arm-linux --with-curses=/usr/local/arm_ncurses --enable-pop CC=arm-linux-gcc

创建交叉编译后目标的生成目录
mkdir /usr/local/arm_mutt

修改 ./doc/ 目录下的 Makefile文件,将 CC CPP AR RANLIB STRIP 修改为宿主机下的gcc , gcc -E,ar , ranlib , strip (原先为 arm-linux-gcc ...)

                                                                  将host_alias = arm-linux 修改为host_alias =

编译
make

安装
make install


【软件的配置】--msmtp

将 /usr/local/arm_openssl/lib 目录下载到目标板上 /mnt 目录,执行下面的命令,导出openssl库的路径:
export LD_LIBRARY_PATH=/mnt/arm_openssl/lib:$LD_LIBRARY_PATH

将 /usr/local/bin/msmtp 下载到目标板目录 /mnt,

 在开发板上进去mnt目录,使用 --version 参数查看配置文件的目录:
./msmtp --version

msmtp version 1.4.24
Platform: arm-unknown-linux-gnu
TLS/SSL library: none
Authentication library: built-in
Supported authentication methods:
plain cram-md5 external login
IDN support: disabled
NLS: disabled
Keyring support: none
System configuration file name: /usr/local/etc/msmtprc
User configuration file name: /root/.msmtprc

Copyright (C) 2010 Martin Lambers and others.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

由此看出,默认的系统配置文件目录在 /usr/local/etc/msmtprc

创建目录 /usr/local/etc ,创建文件 msmtprc ,编辑内容
mkdir -p /usr/local/etc
touch /usr/local/etc/msmtprc
vi /usr/local/etc/msmtprc

#account 163
host smtp.163.com

port 25
from xiaomo_lzm@163.com
auth login
tls off
user xiaomo_lzm@163.com
password *********(自己邮箱的密码)

logfile /var/log/msmtp.log
 

这边先测试一下:#msmtp 461269717@qq.com

                               hello

                               this is test!

然后按ctrl+D结束输入,可以在461269717@qq.com看到发的邮件,或者#tail -f /var/log/msmtp.log 看看有没有成功。 

如果提示:msmtp: cannot locate host smtp.163.com: Name or service not known    

先在开发板ping smtp.163.com                  

如果提示:

是因为开发板上还只能ping通内网,ping不通外网的缘故,

则将虚拟机/etc/目录下的resolv.conf 和host*拷贝到开发板根文件系统上的/etc/目录下

再来ping smtp.163.com就可以ping通外网了

这时再来执行#msmtp 461269717@qq.com就能成功发送邮件了

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【软件的配置】--msmtp
将 mutt 下载到目标板目录 /mnt 后,使用 -v 参数查看配置文件目录
# ./mutt -v
Mutt 1.5.21 (2010-09-15)
Copyright (C) 1996-2009 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.

System: Linux 2.6.18-7.1 (7405d0-smp)
ncurses: ncurses 5.6.20061217 (compiled with 5.6)
Compile options:
-DOMAIN
-DEBUG
-HOMESPOOL  -USE_SETGID  -USE_DOTLOCK  -DL_STANDALONE  +USE_FCNTL  -USE_FLOCK  
+USE_POP  -USE_IMAP  -USE_SMTP 
-USE_SSL_OPENSSL  -USE_SSL_GNUTLS  -USE_SASL  -USE_GSS  +HAVE_GETADDRINFO 
+HAVE_REGCOMP  +USE_GNU_REGEX 
+HAVE_COLOR  +HAVE_START_COLOR  +HAVE_TYPEAHEAD  +HAVE_BKGDSET 
+HAVE_CURS_SET  +HAVE_META  +HAVE_RESIZETERM 
+CRYPT_BACKEND_CLASSIC_PGP  +CRYPT_BACKEND_CLASSIC_SMIME  -CRYPT_BACKEND_GPGME 
-EXACT_ADDRESS  -SUN_ATTACHMENT 
+ENABLE_NLS  -LOCALES_HACK  +HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  +HAVE_LANGINFO_YESEXPR 
+HAVE_ICONV  -ICONV_NONTRANS  -HAVE_LIBIDN  +HAVE_GETSID  -USE_HCACHE 
-ISPELL
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/usr/local/arm_mutt/share/mutt"
SYSCONFDIR="/usr/local/arm_mutt/etc"
EXECSHELL="/bin/sh"
-MIXMASTER
To contact the developers, please mail to <mutt-dev@mutt.org>.
To report a bug, please visit http://bugs.mutt.org/.

由此,可以看出配置文件的目录是 /usr/local/arm_mutt/etc

在开发板上创建配置文件目录:mkdir -p /usr/local/arm_mutt/etc
将宿主机上/etc/目录下的Muttrc 配置文件复制一份到开发板并进行修改,修改的地方是:
set sendmail="/mnt/msmtp"
set use_from=yes
set realname="xiaomo_lzm@163.com"
set from=xiaomo@163.com
set editor="vi"

并把set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"这一行注释掉(前面加#号,否则会提示sh: gettext: not found)

然后复制到目标板上的目录 /usr/local/arm_mutt/etc

将 mutt 下载到目标板目录 /mnt 后运行,

如果报错误:
Error opening terminal: vt102.

解决方法:
(目标板)

mkdir -p /usr/share/terminfo/v

以下两行可以写到/etc/profile中,就不用每次都重复输入了

export TERM=vt102
export TERMINFO=/usr/share/terminfo
现在需要复制我们宿主机  上的 vt102文件
(宿主机)

cd /usr/share/terminfo/v
ls -l
lrwxrwxrwx 1 root root   32 2011-06-23 19:31 vt102 -> ../../../../lib/terminfo/v/vt102
可以看出,这个目录下的 vt102 只是个软链接,实际的文件在上面给出的位置,将这个实际的vt102文件下载到目标板上的 /usr/share/terminfo/v 目录下

如果不是软连接,则直接把该文件复制到开发板上

以后可以把/mnt/目录下的mutt复制到/bin/下,就可以直接使用mutt命令了


【软件的使用方法】

使用mutt发送邮件的方法是:
mutt -s 邮件标题 收件人邮箱地址 -a 附件所在的路径 < 邮件正文的文件所在的路径

如下:
 echo "this is the test mail !" | mutt -s "mail test" 461269717@qq.com -a ddd.c

(-s指定主题,-a指定附件,echo后面跟着邮件正文)

如果出现如下错误:

                           

先ping 127.0.0.1如果能ping得通,再#mutt -v看下配置文件Muttrc有没有放错文件夹,我就是犯了这么白痴的错误。。。

配置正确后,用mutt -s "hello" 461269717@qq.com -a ddd.c < ddd.c 会收到带附件的邮件:

                          

 

 

 

使用mutt接收邮件的方法是:
./mutt 打开图形界面

q:Quit  d:Del  u:Undel  s:Save  m:Mail  r:Reply  g:Group  ?:Help               

 


---Mutt: /var/mail/root [Msgs:0]---(date/date)--------------------------(all)---

按 c 键打开邮件服务器输入:
Open mailbox ('?' for list):
Open mailbox:

输入格式为 pop://邮件账户名:密码@pop服务器域名

如下:
pop://xiaomo_lzm@163.com:*********@pop.163.com

 

笔者辛苦写的资料,转载请注明出处:http://blog.csdn.net/l461269717/article/details/8061576 (小默)

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值