作者 主題: 用Tarball轉rpm升級sendmail  (閱讀 6431 次)

0 會員 與 1 訪客 正在閱讀本文。

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
用Tarball轉rpm升級sendmail
« 於: 2006-08-28 18:13 »
因為暫無升級OS的計畫,又感於spam的日益猖獗,浪費了很多效能與頻寬。
得知sendmail自8.13版起,有一些很好的功能可以使用,操作設定參考於:
http://www.technoids.org/dossed.html

因為這是一部過濾spam的mail gateway,於是就想試著直接升級sendmail,利用其新的功能來抵擋spam,幾經嚐試之後,個人即假設在同樣的環境底下,所需耗費的功夫應該會少一點。

原始環境:
代碼: [選擇]
OS:Fedora Core 2
sendmail:8.12.11-4.26.legacy


所需檔案:
代碼: [選擇]
sendmail.8.13.8.tar.gz
sendmail-8.12.11-4.26.legacy.src.rpm


1.安裝rpm-build套件
代碼: [選擇]
yum install rpm-build

2.安裝sendmail source rpm
代碼: [選擇]
rpm -ivh sendmail-8.12.11-4.26.legacy.src.rpm


3.修改spec
代碼: [選擇]
vi /usr/src/redhat/SPECS/sendmail.spec

原始檔案請參考source rpm中的sendmail.spec
在此僅列出異動的部份:
    未與LDAP整合,未來的使用可能性不高;
    Version要與sendmail.8.13.8.tar.gz檔案配合;
    Release是你自行定義的;
    Patch當然就不需要了;
    NIS也不需要;
    直接定義access.db的預設值,設定GreetPause、ClientConn、ClientRate;
代碼: [選擇]
--- sendmail-my.spec    2006-08-28 15:13:57.000000000 +0800
+++ sendmail.spec       2006-03-23 11:31:24.000000000 +0800
@@ -4,7 +4,7 @@
 %define       with_sasl1    no
 %define       with_sasl2    yes
 %define       with_milter   yes
-%define       with_ldap     no
+%define       with_ldap     yes
 %define       with_mysql    no

 %define       enable_pie    yes
@@ -17,8 +17,8 @@

 Summary: A widely used Mail Transport Agent (MTA).
 Name: sendmail
-Version: 8.13.8
-Release: 2.1.my
+Version: 8.12.11
+Release: 4.26.legacy
 License: Sendmail
 Group: System Environment/Daemons
 Provides: smtpdaemon
@@ -32,17 +32,17 @@
 Source6: sendmail-redhat.mc
 Source7: Sendmail-sasl1.conf
 Source8: sendmail.pam
-#Source9: sendmail-8.12.5-newconfig.readme
-#Source10: makecert.sh
+Source9: sendmail-8.12.5-newconfig.readme
+Source10: makecert.sh
 Source11: Sendmail-sasl2.conf
-#Patch3: sendmail-8.12.2-makemapman.patch
-#Patch4: sendmail-8.12.11-smrsh-paths.patch
-#Patch5: sendmail-8.12.2-movefiles.patch
-#Patch7: sendmail-8.12.5-pid.patch
-#Patch9: sendmail-8.12.7-hesiod.patch
-#Patch10: sendmail-8.12.7-manpage.patch
-#Patch11: sendmail-8.12.9-dynamic.patch
-#Patch12: sendmail-8.12-VU#834865.patch
+Patch3: sendmail-8.12.2-makemapman.patch
+Patch4: sendmail-8.12.11-smrsh-paths.patch
+Patch5: sendmail-8.12.2-movefiles.patch
+Patch7: sendmail-8.12.5-pid.patch
+Patch9: sendmail-8.12.7-hesiod.patch
+Patch10: sendmail-8.12.7-manpage.patch
+Patch11: sendmail-8.12.9-dynamic.patch
+Patch12: sendmail-8.12-VU#834865.patch
 Buildroot: %{_tmppath}/%{name}-root
 BuildRequires: tcp_wrappers
 BuildRequires: db4-devel
@@ -126,20 +126,19 @@
 %prep
 %setup -q

-#%patch3 -p1 -b .makemapman
-#%patch4 -p1 -b .smrsh_paths
-#%patch5 -p1 -b .movefiles
-#%patch7 -p1 -b .pid
-#%patch9 -p1 -b .hesiod
-#%patch10 -p1 -b .manpage
-#%patch11 -p1 -b .dynamic
-#%patch12 -p1 -b .VU#834865
+%patch3 -p1 -b .makemapman
+%patch4 -p1 -b .smrsh_paths
+%patch5 -p1 -b .movefiles
+%patch7 -p1 -b .pid
+%patch9 -p1 -b .hesiod
+%patch10 -p1 -b .manpage
+%patch11 -p1 -b .dynamic
+%patch12 -p1 -b .VU#834865

 %build
 # generate redhat config file
-#define(\`confMAPDEF', \`-DNEWDB -DNIS -DHESIOD -DMAP_REGEX')
 cat > redhat.config.m4 << EOF
-define(\`confMAPDEF', \`-DNEWDB -DHESIOD -DMAP_REGEX')
+define(\`confMAPDEF', \`-DNEWDB -DNIS -DHESIOD -DMAP_REGEX')
 define(\`confOPTIMIZE', \`${RPM_OPT_FLAGS}')
 define(\`confENVDEF', \`-I/usr/include/db4 -I/usr/kerberos/include -Wall -DXDEBUG=0 -DTCPWRAPPERS -DNETINET6 -DHES_GETM
AILHOST -DUSE_VENDOR_CF_PATH=1 -D_FFR_WORKAROUND_BROKEN_NAMESERVERS -D_FFR_SMTP_SSL')
 define(\`confLIBDIRS', \`-L/usr/kerberos/%{_lib}')
@@ -285,8 +284,8 @@
 cp smrsh/README      $DOC/README.smrsh
 cp libmilter/README  $DOC/README.libmilter
 cp cf/README         $DOC/README.cf
-#cp %{SOURCE9}        $DOC/README.redhat
-#cp %{SOURCE10}        $DOC/makecert.sh
+cp %{SOURCE9}        $DOC/README.redhat
+cp %{SOURCE10}        $DOC/makecert.sh

 # Install the cf files for the sendmail-cf package.
 cp -ar cf/* $RPM_BUILD_ROOT/%{sendmailcf}
@@ -340,14 +339,6 @@
 localhost                      RELAY
 127.0.0.1                      RELAY

-ClientRate:127.0.0.1           0
-ClientRate:                    10
-
-ClientConn:127.0.0.1           0
-ClientConn:                    10
-
-GreetPause:127.0.0.1           0
-
 EOF
 for map in virtusertable access domaintable mailertable ; do
     touch $RPM_BUILD_ROOT/etc/mail/${map}


4.製作rpm
代碼: [選擇]
rpmbuild -ba /usr/src/redhat/SPECS/sendmail-my.spec


等編譯完成後,確認沒有錯誤訊息的話,
就到/usr/src/redhat/RPMS/i386/底下試試自製的rpm,
同時在/usr/src/redhat/SRPMS/底下也會有修正過的source rpm檔,
下次拿此檔直接修改即可。

由於個人對於spec的詳細設定尚未研究透徹,
不知這樣是否會有後遺症或是不良影響,
園內高手眾多,望請略微指導一、二?

只不過,
自從上了新版sendmail之後,
系統的承載明顯降低許多,
擋掉許多以程式發信的spam,
未來就看何時它們又突破了再說。