diff --git a/manifests/postfix/sender.pp b/manifests/postfix/sender.pp
index a60f7214793b1b3f80df839cfc934b8e40a6b239..e0fb9c6613c4f6e577fe7abecb129b0c99980c29 100644
--- a/manifests/postfix/sender.pp
+++ b/manifests/postfix/sender.pp
@@ -21,26 +21,26 @@ define base::postfix::sender(
   $file = '/etc/postfix/senders'
 ) {
   $pattern = "'^${name}'"
+  $line = "${name} ${ensure}"
+  $file_line_ensure = $ensure ? {
+    'absent' => 'absent',
+    default  => 'present',
+  }
+
+  file_line { "add-sender-${name}":
+    ensure  => $file_line_ensure,
+    path    => $file,
+    line    => $line,
+    require => Package['postfix'],
+    notify  => Exec["postmap hash:${file}"],
+  }
+
   case $ensure {
-    'absent': {
-      exec { "rm-sender-${name}":
-        command => "sed -i -e '/^${name}/d' ${file}",
-        onlyif  => "grep ${pattern} ${file}",
-        notify  => Exec["postmap hash:${file}"]
-      }
-    }
     default: {
-      $line = "${name} ${ensure}"
-      exec { "add-sender-${name}":
-        command => "echo '${line}' >> ${file}",
-        unless  => "grep ${pattern} ${file}",
-        require => Package['postfix'],
-        notify  => Exec["postmap hash:${file}"],
-      }
       exec { "fix-sender-${name}":
         command => "sed -i -e 's/^${name}..*\$/${line}/' ${file}",
         unless  => "grep '^${line}\$' ${file}",
-        require => Exec["add-sender-${name}"],
+        require => File_line["add-sender-${name}"],
         notify  => Exec["postmap hash:${file}"],
       }
     }