热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

安装和配置berkeleydb.4.5+sendmail-8.14.2

我在安装sendmail时,使用makemap生成数据库文件,出现过以下问题:makemaphash/etc/mail/access/etc/mail/access出错:makemap:Needtorecompilewith-DNEWDBforhashsupport!”使用whichmakemap命令查找,没有make

我在安装sendmail时,使用makemap生成数据库文件 ,出现过以下问题:

makemap hash /etc/mail/access makemap: Need to recompile with -DNEWDB for hash support!”

 使用which makemap 命令查找,没有makemap可执行文件。我的运行环境是:

操作系统:CentOS 5.1
安装软件:Sendmail.8.14.2  cyrus-sasl-2.1.15 m4-1.4.2

  首先分析原因,使用makemap生成数据库出错,系统给出的理由是如果需要hash支持,需要重新编译时,加上-DNEWDB选项。

加上-DNEWDB选项

    那么“-DNEWDB”选项指的是什么?在什么文件里加上这个选项呢?我需要首先解决这两个问题。我到网上搜索,还是一无所获,忽然想起可以使用man命令,查找makemap帮助。我马上在终端窗口键入man makemap,浏览完毕,有一条信息给了我很大的启发,“hash   Hash format maps.  This also requires the Berkeley DB library.”,原来Hash依赖Berkeley DB library库,那么加上-DNEWDB选项,就是要告诉系统编译时须加上Berkeley DB library库的支持。我赶紧在网上down了一个db-4.5.20.tar.gz,具体的安装步骤为:

$tar zxvf db-4.5.20.tar.gz
$cd db-4.5.20/build_unix
$../dist/configure
$make
$su
#make install

    默认的安装路径为/usr/local/ BerkeleyDB.4.5/,头文件在/usr/local/BerkeleyDB.4.5/include/*,库文件在/usr/ local/BerkeleyDB.4.5/lib/*。

   BerkeleyDB.4.5库安装完后,下一步便是该如何配置文件,如何让sendmail编译时gcc自动搜索到BerkeleyDB.4.5库的头文件和库文件。

如何配置BerkeleyDB.4.5库

    我在配置sasl2时,需要使用sendmail源代码目录下的devtools/Site/site.config.m4文件,我想加载BerkeleyDB.4.5库也需要在这里配置。我首先打开devtools/Site/site.config.m4.sample文件,这是site.config.m4配置文件的一个样本,里面告诉你怎样配置site.config.m4文件。令我惊喜的是,我从里面查找到“how to add support for a particular map class.”并告诉我具体的方法:

dnl ### Changes for PH_MAP support.
APPENDDEF(`confMAPDEF',`-DPH_MAP')
APPENDDEF(`confLIBS', `-lphclient')
APPENDDEF(`confINCDIRS', `-I/opt/nph/include')
APPENDDEF(`confLIBDIRS', `-L/opt/nph/lib')

  那么如果我希望hash支持,只需要更改一下参数即可。由于没有site.config.m4文件,我们需要重新创建一个。使用vi  site.config.m4命令,加入:

APPENDDEF(`confMAPDEF',`-DNEWDB')
APPENDDEF(`confLIBS', `-ldb')
APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.5/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.5/lib')

sendmail-8.14.2下载及安装

Sendmail的最新版本为:8.14.2,文件大小为1.2MB。
1.解压缩
# tar -zxvf Sendmail-8.14.2.tar.gz
#cd Sendmail-8.14.2
如果软件包是rpm格式,则解压安装如下:
#rpm -ivh Sendmail-8.14.2-src.rpm
2.编译
#sh Build
如果不出什么问题,编译通过,编译完成后会自动生成目录:obj.linux.2.2.18.i686(这是笔者的核心名称,也许你的内核名称与此不同)。
3.安装
#sh Build install
如果是rpm 格式的软件包,则应编译如下:
# rpm -ba Sendmail-8.14.2.spec
#rpm -ivh Sendmail*.rpm
至此编译、安装完成

# cd cf/cf

# cp generic-linux.mc sendmail.mc

# make install-cf

# cp sendmail.mc /etc/mail

# cd /etc/mail

# touch aliases access

# echo "主机域名">local-host-name(或直接打开local-host-name对其进行编辑)

# echo "localhost    RELAY">>access

# makemap hash access.db

# /usr/lib/sendmail -bd -q30m

# /sbin/server sendmail start 这样就可以正常运行sendmail了

附;如出来找不以libdb-*.*.so错误,可到/usr/local/BerkeleyDB.*.*/lib找到所对应的文件,把对应的文件拷至/usr/lib就可以把问题解决了


推荐阅读
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • CentOS 6.8 上安装 Oracle 10.2.0.1 的常见问题及解决方案
    本文记录了在 CentOS 6.8 系统上安装 Oracle 10.2.0.1 数据库时遇到的问题及解决方法,包括依赖库缺失、操作系统版本不兼容、用户权限不足等问题。 ... [详细]
  • 深入理解动态链接库及其应用
    本文将探讨动态链接库的基本概念,包括Windows下的动态链接库(DLL)和Linux下的共享库(Shared Library),并详细介绍如何在Linux环境中创建和使用这些库。 ... [详细]
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • 解决CentOS 7.5中无法通过man命令查询C语言库函数的问题
    本文描述了在CentOS 7.5操作系统上,使用man命令查询C语言库函数时遇到的问题,并提供了详细的解决方案。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • CentOS 转向引发争议,联合创始人推出 Rocky Linux
    CentOS 转向 CentOS Stream 引发用户不满,其联合创始人 Gregory Kurtzer 推出新的社区项目 Rocky Linux,旨在延续 CentOS 的精神。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 本文详细介绍了如何在Ubuntu的Enlightenment (E17) 桌面环境中管理和优化桌面图标及根菜单。通过本文,您将了解这些功能的作用及其配置方法。 ... [详细]
  • 本文详细介绍了Linux系统中的进程管理函数,涵盖了获取进程ID、用户ID、创建子进程、信号处理等关键操作。通过这些函数,开发者可以更好地控制和管理进程行为。 ... [详细]
  • 本文详细介绍了如何在Linux系统中创建和管理DB2数据库,包括用户切换、数据库创建、错误处理、连接与断开、表空间和缓冲池的创建,以及用户权限管理和数据导入导出等操作。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
author-avatar
黄初伦伟彦宜婷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有