Good Mawwwwwning nerdmigos,
You (name hidden) requested my assistance on doing DLR in kannel. There you are, kaz qwako 
There are a few approaches but the following (and derivaties) has never let me down. 
I dont know if its only me, but on kannel release 1.4.3 you are ONLY able to get DLR when u set dlr-mask to 31
The following approach (or similar) has never let me down...
a. kanne.conf
#TRIGGER
group = sms-service
keyword = trigger
aliases = triger 
get-url = "http://192.168.1.45:8080/mwasima/trigger?keyword=%k&client=%s&service=%s&sender=%p&time=%t&dlrmask=31&dbtype=postgres&smsgateway=192.168.1.30"
omit-empty = true
and the following (proxy) function to push sms
b.  IOLogic.java
public static String sendSMS(int smsid, String receiver, String sms, boolean flash, String webapp, String smsgateway){
        String clean_sms = sms.replace(" ","%20");        //we can do better than this !!!!!
        
        String reply = "";
        log.info("ATTEMPTING to send [" + sms + "] to " + receiver);
        dlrurl = encodeURL(webapp + "/dlr?smsid=" + smsid + "&dest=" + receiver  + "&type=%d&dlr=%A");
        
        try{
        
            URL send_sms_url = new URL("http://" + smsgateway + ":13013/cgi-bin/sendsms?username=" + ux +"&password=" + px +(flash==true?"&mclass=0":"")+ "&to=" + receiver +"&text=" + clean_sms + "&dlr-mask=" + dlrmask + "&dlr-url=" + dlrurl);
            log.info("send sms url = " + send_sms_url);
            URLConnection url_con = send_sms_url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(url_con.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null){
                reply += inputLine;
                }
            in.close();
            return reply;
            }
        catch(IOException e){
            log.severe("Error at sendSMS(): " + e.getMessage());
            return "IOException [" + receiver + ", " + sms + "]";
            }
        }
and the finaly the following function to persist DLR 
c.  IOLogic.java
    //INSERT DELIVERY REPORTS
    public static void insDLR(DataSource d, int _smsID, String _smsText, String _dest, String _status, String _report){
           try{
              Connection con = null;
               con = d.getConnection();
               con.setAutoCommit(false);
              PreparedStatement ps = con.prepareStatement("INSERT INTO sms_dlr_log(sms_id, sms_text, destination, dlr_status, dlr_report) VALUES(?,?,?,?,?)");   
              ps.setInt(1, _smsID);
              ps.setString(2, _smsText);
              ps.setString(3, _dest);
              ps.setString(4, _status);
              ps.setString(5, _report);
              int u = ps.executeUpdate();
              con.commit();        //explicit commit
              con.setAutoCommit(true);
              con.close();
               }
          catch(SQLException ex){
               log.severe("Message:" + ex.getMessage() + ": Failed to log DLR");
              }
          catch(ClassCastException exx){
               log.severe("Message:" + exx.getMessage() + ": Failed to log DLR");
               }
        }
Easy isnt it ??
Question: what if a Servlet wants to reply directly (instead of calling sendsms url) to the request and at the same time ask for a DLR ?? 
Answer (tongue in cheek): we need to employ x-kannel-headers 
In ur doGet() method do the following
public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
      this.request = request;
        this.response = response;
        response.setContentType("text/html");
        webapp = "http://" + request.getServerName() + ":" + request.getLocalPort() + request.getContextPath();
    //We need to set accept-x-kannel-headers = true in kannel.conf
    response.addHeader("X-Kannel-DLR-Mask", "31");
        smsbody = request.getParameter("smsbody");        
    receiver = request.getParameter("receiver");
    dlrurl = webapp + "/dlr?smsid=1&dest=" + receiver + "&type=%d&dlr=%A&localsmsid=%I&remotesmsid=%F&smsuser=%n";
        response.addHeader("X-Kannel-DLR-Url", dlrurl);
        this.out = response.getWriter();
       //DO UR MAGIC HERE
    //then finaly send ur reply 
        out.println("UR REPLY HERE");
    }
...NOW U CAN HUG URSELF