It’s actually surprisingly simple.
In .XCompose, if an entry starts with a character, that character becomes a dead key, regardless of the type of that character. For instance, if you write
<a> <U20>: "a"
<a> <grave>: "à"
<a> <acute>: "á"
<a> <2> <grave>: "ȁ"
every time you type “a” the system will wait for the next character. Note that if the next character isn’t supported, nothing will be typed. So, in this case, “a06” will return just “6”.
If you don’t want to use a standard character, you can use one of the characters in the private use area, like (U+E700).
So, in your case, all you need to do is to write the following in the $HOME/.XCompose file.
<U3C3> <U20>: "ς "
<U3C3> <U21>: "ς!"
<U3C3> <U2C>: "ς,"
<U3C3> <U2E>: "ς."
<U3C3> <U3A>: "ς:"
<U3C3> <U3B>: "ς;"
<U3C3> <U3F>: "ς?"
<U3C3> <U3B1>: "σα"
<U3C3> <U3B2>: "σβ"
<U3C3> <U3B3>: "σγ"
<U3C3> <U3B4>: "σδ"
<U3C3> <U3B5>: "σε"
<U3C3> <U3B6>: "σζ"
<U3C3> <U3B7>: "ση"
<U3C3> <U3B8>: "σθ"
<U3C3> <U3B9>: "σι"
<U3C3> <U3BA>: "σκ"
<U3C3> <U3BB>: "σλ"
<U3C3> <U3BC>: "σμ"
<U3C3> <U3BD>: "σν"
<U3C3> <U3BE>: "σξ"
<U3C3> <U3BF>: "σο"
<U3C3> <U3C0>: "σπ"
<U3C3> <U3C1>: "σρ"
<U3C3> <U3C3>: "σσ"
<U3C3> <U3C4>: "στ"
<U3C3> <U3C5>: "συ"
<U3C3> <U3C6>: "σφ"
<U3C3> <U3C7>: "σχ"
<U3C3> <U3C8>: "σψ"
<U3C3> <U3C9>: "σω"
<U3C3> <dead_acute> <U3B1>: "σά"
<U3C3> <dead_acute> <U3B5>: "σέ"
<U3C3> <dead_acute> <U3B7>: "σή"
<U3C3> <dead_acute> <U3B9>: "σί"
<U3C3> <dead_acute> <U3BF>: "σό"
<U3C3> <dead_acute> <U3C5>: "σύ"
<U3C3> <dead_acute> <U3C9>: "σώ"
<U3C3> <dead_diaeresis> <U3B9>: "σϊ"
<U3C3> <dead_diaeresis> <U3C5>: "σϋ"
You may also need a combination to type σ alone.