Skip to content

Instantly share code, notes, and snippets.

@choonkeat
Created August 1, 2012 10:33
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save choonkeat/3225691 to your computer and use it in GitHub Desktop.
Save choonkeat/3225691 to your computer and use it in GitHub Desktop.
receiving (postfix) emails via (rails) http; using file upload (-F) for less verbose Rails log (otherwise use --data-urlencode)
#!/bin/bash
MAILFILE=/tmp/mail.$$
CURLFILE=/tmp/mail.$$.curl
cat > $MAILFILE
curl -i -F message=@$MAILFILE "http://localhost/incoming_messages" > $CURLFILE
if grep 'HTTP/1.1 204 No Content' $CURLFILE
then
rm -f $CURLFILE $MAILFILE
fi
class IncomingMessagesController < ApplicationController
def create
raw = params[:message].respond_to?(:read) && params[:message].read || params[:message]
mail = Mail.new(raw)
# do stuff
head(:no_content) # bash script will detect 204 and rm -rf tmp files
end
end
mailbox_command = /somewhere/diy.cloudmailin.bash
@andreas-globi
Copy link

What happens if curl fails? Does postfix re-queue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment